# 在程序开始之前完成数据的读取
# 存在着循环
# 循环的内容
# 将操作内容分解为函数 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. 用户输入学号,如果是以aabcddef开头,并且后边是4位数字,前两位大于06小于等于当前年份。判断用户输入是否合法

    package seven_topic; import java.util.*; public class p_19_1 { public static void main(String[] args ...

  2. mac通过docker一键部署MySQL8

    目录 mac通过docker一键部署MySQL8 一.前言 二.系统配置 三.安装步骤 Dockerhub查看镜像地址 1.一键安装 1.1.克隆脚本 1.2.安装程序 1.2.1.安装程序详情 1. ...

  3. c++算法竞赛常用板子集合(持续更新)

    前言 本文主要包含算法竞赛一些常用的板子,码风可能不是太好,还请见谅. 后续会继续补充没有的板子.当然我太菜了有些可能写不出来T^T 稍微有些分类但不多,原谅我QwQ 建议 Ctrl + F 以快速查 ...

  4. 题解 P6745 『MdOI R3』Number

    前言 不知道是不是正解但是觉得挺好理解. 科学计数法 将一个数表示为\(a\times 10^x\) 的形式.其中\(a\leq10\),\(x\) 为整数. \(\sf Solution\) 其实这 ...

  5. 二进制安装JDK和Tomcat

    Oracle JDK的二进制文件安装 https://www.oracle.com/java/technologies/java-se-glance.html #官网下载地址 [root@rocky8 ...

  6. ES6 学习笔记(十)Map的基本用法

    1 基本用法 Map类型是键值对的有序列表,而键和值都可以是任意类型.可以看做Python中的字典(Dictionary)类型. 1.1 创建方法 Map本身是一个构造函数,用来生成Map实例,如: ...

  7. 上下文管理器 context managet

    定义:实现了上下文管理协议的对象,主要用于保存和恢复各种全局状态,关闭文件等,它本身就是一种装饰器. with语句 with语句就是为支持上下文管理器而存在的

  8. 聊聊mysql的事务

    今天来聊聊事务的四大特性以及其实现原理,需结合之前写的mysql是如何实现mvcc的来理解,因为大多数的实现都是基于mvcc的,理论介绍完后会通过实例来演示mvcc又是如何实现这些隔离级别的 事务的四 ...

  9. fltp备份文件后统计验证

    上一篇(https://www.cnblogs.com/jying/p/16805821.html)记录了自己在centos使用lftp备份文件的过程,本篇记录自己对备份后的文件与源文件目录的对比统计 ...

  10. 优秀的Kafka GUI客户端、可视化管理工具、监控工具

    想要查看Topic里的消息却找不到软件,想要查看或更新Broker.Topic配置,想要监控Broker服务器状态?试试下面的Kafka GUI工具--Kafka Assistant 官网地址:htt ...