# 在程序开始之前完成数据的读取
# 存在着循环
# 循环的内容
# 将操作内容分解为函数 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. ES6中的数组reduce()方法详解

    reduce() 方法对数组中的每个元素执行一个由我们提供的reducer函数(升序执行),将其结果汇总为单个返回值. 1. 语法reduce说明 arr.reduce(callback(accumu ...

  2. 华为路由器RIP路由协议配置命令

    RIP路由协议配置 rip 创建开启协议进程 network + ip 对指定网段接口使能RIP功能IP地址是与路由器直连的网段 debugging rip 1 查看RIP定期更新情况 termina ...

  3. 面向对象day02,作业学生类,电脑类

    学生类,电脑类,测试类 学生类:解释都写在注释里面 public class Student { public String name; public int id; public char gend ...

  4. 齐博x1非正常修改后台入口admin.php导致的问题

    如果你不是从后台基础设置修改后台入口admin.php文件名的话,也即强行通过FTP修改admin.php文件的名的话,就会导致网站会运行异常 比如会出现不能上传文件之类的.如下图所示

  5. json文本数据

    本文主要针对三个问题:json格式数据,text数据与json数据之间的关系,json和python字典的区别 1.什么是json数据? json是文本数据,可以在网络中传输的通用数据,它是具有特定格 ...

  6. python: m个位置,每个位置有n种可能,求所有排列结果

    >>> import itertools >>> m, n = 3, 2 >>> paths = list(itertools.product(r ...

  7. Unity——滚动的小球

    Unity--滚动的小球 工程理解 本游戏为通过键盘上的W.A.S.D键控制小球的运动轨迹来对固定位置上的小方块进行碰撞,以此来进行加分计数的. 其中主要对象为小球和自转的小方块:在小球上,我们添加刚 ...

  8. DQL-limit分页

    DQL-limit分页 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能-limit. 一.limit概述 Limit是 ...

  9. mlflow详细安装部署

    1.安装docker # 安装工具 sudo yum install -y yum-utils # 添加yum仓库配置 sudo yum-config-manager --add-repo https ...

  10. vue-axios删除操作

    <template> <div class="nav"> <input v-model="location" type=" ...