# 在程序开始之前完成数据的读取
# 存在着循环
# 循环的内容
# 将操作内容分解为函数 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. [题解] Atcoder Regular Contest ARC 148 A B C E 题解

    点我看题 题目质量一言难尽(至少对我来说 所以我不写D的题解了 A - mod M 发现如果把M选成2,就可以把答案压到至多2.所以答案只能是1或2,只要判断答案能不能是1即可.如果答案是1,那么M必 ...

  2. PHP全栈开发(八):CSS Ⅷ border margin padding

    在CSS里面,所有的HTML元素都可以看成是一个盒子. 那么在设计和布局的时候,最常用的,也就是用来定义这个盒子的外边距的就是margin 定义这个盒子的内边距的就是padding 元素的内容所占的宽 ...

  3. PHP全栈开发(八):CSS Ⅴ 超链接 style

    CSS里面有专门针对超链接的选择器,也就是他们: a:link - 正常,未访问过的链接 a:visited - 用户已访问过的链接 a:hover - 当用户鼠标放在链接上时 a:active - ...

  4. 洛谷P2880 [USACO07JAN] Balanced Lineup G(树状数组/线段树)

    维护区间最值的模板题. 1.树状数组 1 #include<bits/stdc++.h> 2 //树状数组做法 3 using namespace std; 4 const int N=5 ...

  5. Docker | dockerfile构建centos镜像,以及CMD和ENTRYPOINT的区别

    构建自己的centos镜像 docker pull centos下载下来的镜像都是基础版本,缺少很多常用的命令功能,比如:ll.vim等等, 下面介绍制作一个功能较全的自己的centos镜像. 步骤 ...

  6. 3.ElasticSearch系列之Docker本地部署

    对于之前的部署方式一般用于生产环境,而对于学习而言Docker方式快速部署就好了,本示例在window10环境下进行. 1. Docker使用Elasticsearch 需要对vm.max_map_c ...

  7. Mysql主从配置步骤与各种错误

    测试环境: 2台腾讯云服务器.CentOS 7.2 64位,1G,lnmp. PHP:5.6:Mysql:5.5 两台干净的服务器 下面开始配置主服务器(master) 1.修改配置:  log-bi ...

  8. 2021年9月28日,老是遇到一些非常奇葩的问题。就离谱、好好的一个web项目就莫名奇妙坏了。

    起因是这样的:我前几天用idea2020编辑器,用ssm框架搭建了一个图书管理系统.只是将图书信息的增删改查实现,还有用户的注册和登录功能实现.本来想着今天将用户信息的删除和修改完善以下,本来是很简单 ...

  9. 【pytest官方文档】解读- 开发可pip安装的第三方插件

    在上一篇的 hooks 函数分享中,开发了一个本地插件示例,其实已经算是在编写插件了.今天继续跟着官方文档学习更多知识点. 一个插件包含一个或多个钩子函数,pytest 正是通过调用各种钩子组成的插件 ...

  10. SpringCloud微服务实战——搭建企业级开发框架(四十八):【移动开发】整合uni-app搭建移动端快速开发框架-使用第三方UI框架

      uni-app默认使用uni-ui全端兼容的.高性能UI框架,在我们开发过程中可以满足大部分的需求了,并且如果是为了兼容性,还是强烈建议使用uni-ui作为UI框架使用.   如果作为初创公司,自 ...