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代码解决RenderView窗口not found问题
Aug 28 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
Python上下文管理器和with块详解
Sep 09 Python
Sanic框架请求与响应实例分析
Jul 16 Python
Flask模拟实现CSRF攻击的方法
Jul 24 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
TFRecord格式存储数据与队列读取实例
Jan 21 Python
如何使用python写截屏小工具
Sep 29 Python
彻底解决Python包下载慢问题
Nov 15 Python
Python基础之Socket通信原理
Apr 22 Python
Django drf请求模块源码解析
Jun 08 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
php英文单词统计器
2016/06/23 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
JS中type="button"和type="submit"的区别
2017/07/04 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
国际政治个人自荐信范文
2013/11/26 职场文书
给学校的建议书范文
2014/05/15 职场文书
安全承诺书格式
2014/05/21 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
机关党员公开承诺书
2014/08/30 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers