# 在程序开始之前完成数据的读取
# 存在着循环
# 循环的内容
# 将操作内容分解为函数 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. 第一周python作业

    print("hello world") height=float(input("请输入你的身高:")) weight=float(input("请输 ...

  2. 自然语言处理NLP程序包(NLTK/spaCy)使用总结

    NLTK和SpaCy是NLP的Python应用,提供了一些现成的处理工具和数据接口.下面介绍它们的一些常用功能和特性,便于对NLP研究的组成形式有一个基本的了解. NLTK Natural Langu ...

  3. C++面向对象编程之类的写法

    1.头文件中的防卫式声明 例如自己要建复数complex类,可以建立一个complex.h的头文件. 头文件中必须先写防卫式声明: #ifndef __COMPLEX__ #define __COMP ...

  4. CentOS 7.9 安装 ELK

    一.CentOS 7.9 安装 elasticsearch-7.8.1 地址 https://www.elastic.co https://www.elastic.co/cn/downloads/pa ...

  5. ARC144 D - AND OR Equation

    ARC144 D - AND OR Equation Solution 首先可以猜测和答案仅和每一个二进制位以及\(f(0)\)有关系,不妨把按位\(\operatorname{AND}\)和按位\( ...

  6. 使用 nvm 对 node 进行版本管理

    前端项目工程化,基本都依赖于 nodejs, 不同的项目对于 nodejs 的版本会有要求,nvm 就是可以让我们在各个版本之间进行快速切换的工具. Linux 系统 下载解压 查看所有版本 , 选择 ...

  7. k8s之pod连接被拒排查

    k8s之pod连接被拒排查 pod链接被拒 查看pod的时候发现pod的状态为crashloopbackoff 然后看看日志发现报错如下 kubectl -n kf10 logs easydata-r ...

  8. 学习ASP.NET Core Blazor编程系列九——服务器端校验

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  9. JS逆向实战7-- 某省在线审批网站params 随机生成

    参数分析 我们首先通过抓包 发现这个就是我们所需要的数据 然后我们通过fidder 发起请求 结果: 通过我们反复测试 发现这个params的参数是每次请求中都会变化的 断点查找 我们通过 这个t参数 ...

  10. Linux网络通信(线程池和线程池版本的服务器代码)

    线程池 介绍 线程池: 一种线程使用模式.线程过多会带来调度开销,进而影响缓存局部性和整体性能.而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务.这避免了在处理短时间任务时创建与销毁线程的 ...