# 在程序开始之前完成数据的读取
# 存在着循环
# 循环的内容
# 将操作内容分解为函数 def sel_student(students_list):
"""
查看所有学生信息
:param students_list: 所有的学生信息
:return:
"""
print("id\t\t姓名\t\t性别\t\t年龄\t\t班级")
for i in students_list:
print("%s\t\t%s\t\t%s\t\t%s\t\t%s" % (i["id"], i["name"], i["sex"], i["age"], i["className"])) def add_student(students_list):
print("请输入新学生的相关信息:")
id = input("请输入id:")
name = input("请输入姓名:")
sex = input("请输入性别:")
age = input("请输入年龄:")
className = input("请输入班级:") context = {
"students_list": students_list,
"message": ""
} # 校验参数是否为空
if not all([id, name, sex, age, className]):
context["message"] = "缺失参数"
return context # 校验id是否重复
if id in [i['id'] for i in students_list ]:
context["message"] = "id重复"
return context # 校验性别是否合法
if sex not in ["男", "女"]:
context["message"] = "性别错误"
return context new_student = {}
new_student["id"] = id
new_student["name"] = name
new_student["sex"] = sex
new_student["age"] = age
new_student["className"] = className students_list.append(new_student)
context["message"] = "成功"
return context def edit_student(students_list):
info = input("请输入要修改的学生id")
id = input("请输入新id:")
name = input("请输入新姓名:")
sex = input("请输入新性别:")
age = input("请输入新年龄:")
className = input("请输入新班级:") for i in students_list:
if info == i["id"]:
i["id"] = id
i["name"] = name
i["sex"] = sex
i["age"] = age
i["className"] = className
return "成功" def del_student(students_list):
info = input("请输入删除的学生id")
for i in students_list:
if info == i["id"]:
students_list.remove(i)
return "成功" return "未找到该学生" def read_data():
"""
初始化数据,从data.txt中读取相关的数据
:return: 返回列表数据
"""
# 1. 读取文件数据
f = open("data.txt", encoding="utf-8")
students_list = []
for i in f.readlines():
student_list = i.strip().split(" ")
student = {} # 造一个空的字典
student["id"] = student_list[0]
student["name"] = student_list[1]
student["sex"] = student_list[2]
student["age"] = student_list[3]
student["className"] = student_list[4]
# 2. 转换数据
students_list.append(student)
print(students_list)
f.close() return students_list def save_data(students_list):
"""
保存到文件
:param students_list: 学生数据
:return:
"""
f = open("data.txt", "w", encoding="utf-8") for i in students_list:
f.write("%s %s %s %s %s\n" % (i["id"], i["name"], i["sex"], i["age"], i["className"])) f.close() def main():
students_list = read_data()
while True:
print("""
欢迎使用本系统!
1. 查看学生信息
2. 增加学生信息
3. 修改学生信息
4. 删除学生信息
5. 退出
""")
info = input("请输入你的选择:")
while info not in ["1", "2", "3", "4", "5"]:
print("输入错误,请重新输入!")
info = input("请输入你的选择:") if info == "1":
sel_student(students_list)
elif info == "2":
res = add_student(students_list)
elif info == "3":
edit_student(students_list)
elif info == "4":
del_student(students_list)
else:
print("本次操作结束,欢迎下次使用!")
break if __name__ == '__main__':
main()

python 学生管理系统 文件版 增删改查的更多相关文章

  1. 【练习】Python第四次:实现对文件的增删改查

    一,实现对文件的增删改查 (一),三级菜单的处理结构及退出技巧:使用TAG标记 tag=True while tag: print('leve1') choice=input("level1 ...

  2. Python文件操作-文件的增删改查

    需求:对文件进行增删改查 由于时间原因,本次代码没有增加任何注释,如有疑问,请联系编辑者:闫龙 其实我也是醉了,看着这些个代码,我脑袋也特么大了,没办法,大神说了,不让用新知识,只可以使用学过的,所以 ...

  3. MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存

    二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id=" ...

  4. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  5. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  6. python学习之-成员信息增删改查

    python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...

  7. 基于SpringMVC的文件(增删改查)上传、下载、更新、删除

    一.项目背景 摘要:最近一直在忙着项目的事,3个项目过去了,发现有一个共同的业务,那就是附件的处理,附件包括各种文档,当然还有图片等特殊文件,由于时间的关系,每次都是匆匆忙忙的搞定上线,称这项目的空档 ...

  8. python manage.py shell 的增删改查

    python manage.py shell 的增删改查 guoguo-MacBook-Pro:myblog guoguo$ python manage.py shell Python 3.5.1 ( ...

  9. Python 模拟SQL对文件进行增删改查

    #!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__: Dalhhin # Python 3.5.2,Pycharm 2016.3.2 # 2 ...

  10. python 10min系列之实现增删改查系统

    woniu-cmdb 奇技淫巧--写配置文件生成增删改查系统 视频教程 项目主页跪求github给个star, 线上demo,此页面都是一个配置文件自动生成的 详细的文章介绍和实现原理分析会发布在我的 ...

随机推荐

  1. 一篇文章带你掌握主流基础框架——Spring

    一篇文章带你掌握主流基础框架--Spring 这篇文章中我们将会介绍Spring的框架以及本体内容,包括核心容器,注解开发,AOP以及事务等内容 那么简单说明一下Spring的必要性: Spring技 ...

  2. Spring笔记四

    Spring-04 1.Spring整合Junit ①导入依赖 <!-- junit --> <dependency> <groupId>junit</gro ...

  3. 老杜MySql——34道作业题

    老杜MySql链接:https://www.bilibili.com/video/BV1Vy4y1z7EX?p=132 本次随笔主要来源于老杜MySql讲解视频后面的作业题,加上个人的一些理解,以及整 ...

  4. P5657 [CSP-S2019] 格雷码 (找规律)

    观察几个数据,有一种思路:类似于二分,判断每一位应该填1还是0: 1 #include <bits/stdc++.h> 2 //#define loveGsy 3 using namesp ...

  5. 换工作?试试远程工作「GitHub 热点速览 v.22.40」

    近日,潜在某个技术交流群的我发现即将毕业的小伙伴在焦虑实习.校招,刚好本周 GitHub 热榜有个远程工作项目.不妨大家换个思路,"走"出去也许有更多的机会.当然,除了全球的远程工 ...

  6. 42.JSON Web Token认证

    JSON Web Token认证介绍 简称JWT认证,一般用于用户认证 JWT是一种相当新的标准,可用于基于token的身份验证 与内置的TokenAuthentication方案不同,JWT不需要使 ...

  7. 从 Wepy 到 UniApp 变形记

    作者:vivo 互联网前端团队-Wan Anwen.Hu Feng.Feng Wei.Xie Tao 进入互联网"下半场",靠"人海战术"的研发模式已经不再具备 ...

  8. nginx+keepalived实现主从模式双机热备份

    主从模式就是一台机器提供服务,另一台机器作为备份机,当主机的服务停止时,备份机立刻接替主机的服务. 安装 安装nginx wget http://nginx.org/download/nginx-1. ...

  9. HPL Study 1

    1.安装Linux系统 在虚拟机Vmware上安装CentOS 7系统 2.安装OneApi 安装的时候将文件从桌面拖动到虚拟机安装的时候报错:archive corrupted 解决方法:大文件应采 ...

  10. 系统整理K8S的配置管理实战-建议收藏系列

    目录 一.ConfigMap 1.1.创建 1.1.1.from-file 1.1.2.from-env-file 1.1.3.from-literal 1.1.4.基于yaml文件创建 1.2.Po ...