python做一个系统代码_python初学者,用python3实现基本的学生管理系统代码实例...

这篇文章分享了管理系统,python学生管理系统的使用,这篇文章非常详细地介绍了通过示例代码实现的学生管理系统,该系统对每个人的研究或工作都有一定的参考学习价值。

这个是用python实现的基本的增删改查的学生管理系统吧,其中主要是对输入的数据进行合法性检测的问题,这次又对函数进行了练习!掌握函数更加熟练了!二话不说先贴代码,一切问题请看注释,都很详细,适合python3初学者!

"""

学生管理系统

主要特点:1.可以检测学号是否重复/有误(不为纯数字)

2.可以检测手机号是否合法(是否为纯数字)

3.可以检测性别是否为男或者女

4.能选择性修个学生的某个属性信息,比如只修改某个学生的手机号码

5.能够实现基本的增删改查

6.优化了代码

"""

name_list = [] # 存储学生信息字典,学生信息用字典存,再用列表存储字典

# 菜单

def display_menu():

print("-"*30)

print(" 学生管理系统 v8.8 ")

print("1.添加学生信息")

print("2.删除学生信息")

print("3.修改学生信息")

print("4.查询单个学生信息")

print("5.查询所有学生信息")

print("6.退出系统")

print("-"*30)

# 选择序号的获得

def get_choice():

selected_key = input("请输入选择的序号:")

return selected_key

# 检查性别是否合法

def check_sex(new_sex):

flag = True

while flag:

if new_sex == '男' or new_sex == '女':

flag = False

else:

new_sex = input("输入性别有误,请重新输入(男/女):")

return new_sex

# 检查电话号码是否合法

def check_phone(new_phone):

flag = True

while flag:

if new_phone.isdigit():

flag = False

else:

new_phone = input("您输入的电话号码有误,请重新输入:")

return new_phone

# 检查学号是否重复或者有误

def check_id(new_id):

flag = True

while flag:

# 先检查是不是纯数字再去考虑是否重复的事情,如果不是纯数字直接pass

if new_id.isdigit():

for i in range(len(name_list)):

if name_list[i]['id'] == new_id:

new_id = check_id(input("您输入的学号重复,请重新输入:"))

flag = False

else:

new_id = input("您输入的学号有误,请重新输入:")

return new_id

# 添加学生信息

def add_name():

new_info = {}

new_id = check_id(input("请输入学号:"))

new_info['id'] = new_id

new_name = input("请输入姓名:")

new_info['name'] = new_name

new_sex = check_sex(input("请输入性别(男/女):"))

new_info['sex'] = new_sex

new_phone = check_phone(input("请输入电话号码:"))

new_info['phone'] = new_phone

name_list.append(new_info)

print("添加成功!")

# 查询所有学生信息

def find_all():

print("="*30)

for name in name_list:

print(name['id'], name['name'], name['sex'], name['phone'])

print("=" * 30)

# 删除学生信息

def del_name():

del_id_is = input("请输入要删除的学生学号:")

flag = False

index = 0

for i in range(len(name_list)):

if name_list[i]['id'] == del_id_is:

flag = True

index = i

break

if flag:

name_list.pop(index)

print("删除成功!")

else:

print("学生未找到!请检查学号输入是否有误!")

# 名字修改细节函数

def choice_of_name(index):

while True:

choice = input("请输入要修改学生的(1.id 2.姓名 3.性别 4.电话号码,5.全部修改):")

if choice == '5':

new_id = input("请输入新的学号:")

name_list[index]['id'] = new_id

new_name = input("请输入新的姓名:")

name_list[index]['name'] = new_name

new_sex = check_sex(input("请输入性别(男/女):"))

name_list[index]['sex'] = new_sex

new_phone = check_phone(input("请输入电话号码:"))

name_list[index]['phone'] = new_phone

break

elif choice == '1':

new_id = input("请输入新的学号:")

name_list[index]['id'] = new_id

break

elif choice == '2':

new_name = input("请输入新的姓名:")

name_list[index]['name'] = new_name

break

elif choice == '3':

new_sex = check_sex(input("请输入性别(男/女):"))

name_list[index]['sex'] = new_sex

break

elif choice == '4':

new_phone = check_phone(input("请输入电话号码:"))

name_list[index]['phone'] = new_phone

break

else:

print("输入有误,请重新输入!")

# 修改学生信息

def re_name():

id_is = input("请输入要修改的学生学号:")

flag = False

index = 0

# 先找到要修改的学生的下标

for i in range(len(name_list)):

if name_list[i]['id'] == id_is:

flag = True

index = i

break

if flag:

choice_of_name(index)

print("修改成功!")

else:

print("修改失败,学生信息未找到!")

# 查询单个学生信息

def find_name():

find_id_is = input("请输入要查询的学生学号:")

flag = False

index = 0

for i in range(len(name_list)):

if name_list[i]['id'] == find_id_is:

flag = True

index = i

break

if flag:

print("学生查询到,学生信息为:")

print(name_list[index]['id'], name_list[index]['name'], name_list[index]['sex'], name_list[index]['phone'])

else:

print("学生未找到!")

def main():

exit_name = True

while exit_name:

display_menu()

key = get_choice()

if key == '1':

add_name()

elif key == '2':

del_name()

elif key == '3':

re_name()

elif key == '4':

find_name()

elif key == '5':

find_all()

elif key == '6':

exit_name = False

else:

print("请输入正确的数值!")

main()

以上所述是小编给大家介绍的用python实现学生管理系统详解整合,希望对大家有所帮助,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python入门笔记

Python变量和数据类型 数据类型 print语句 注释 Python的注释以 # 开头,后面的文字直到行尾都算注释 # 这一行全部都是注释... print hello # 这也是注释 什么是变量 定义字符串 字符串可以用或者""括起来表示。 如果字符串本身包含怎么办?比如…

1058. 选择题(20)

原题: https://www.patest.cn/contests/pat-b-practise/1058 思路: 本题主要就是怎么读取数据的问题, 一定要注意scanf函数匹配到 空格或者回车会结束当前变量的赋值, 并且会丢弃这个空格或回车. 关于如何判断一项答题是否正确, 可以采用循环一个一个判断, 也可拼成 字符串用st…

使用Spring和Hibernate进行集成测试有多酷

我有罪,直到现在才写集成测试(至少针对数据库相关事务)。 因此,为了消除内感,我阅读了如何在周末以最少的努力实现这一目标。 提供了一个小示例,描述了如何使用Spring和Hibernate轻松实现这一目标。 通过集…

假设mysql数据表t1有字段_使用ROMA Connect集成数据

概述ROMA Connect支持接入多种类型的数据源,并通过数据集成任务实现源端到目标端的数据集成转换。ROMA Connect支持相同结构数据之间进行集成转换,也支持异构数据之间进行集成转换。本章节通过完成一个SQL Server到MySQL的数据集成配置样例,帮…

vue-wechat-title

html中的title安装:npm install vue-wechat-title --save1.在mian.js中//网页titleimport VueTitle from vue-wechat-title Vue.use(VueTitle);2. 路由中加下 title { path: /, component: Index, meta: { title: 首页 } }3. 在app.vue 中修改 router-view &a…

如何保证input的输入值不会随着提交 而变空_如何对web界面的应用进行测试?

一、输入框:1、字符型输入框:(1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!#¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时&…

CentOS6.x下,tomcat - web项目部署

1. 安装tomcat tomcat安装方法&#xff1a;http://www.cnblogs.com/vurtne-lu/p/6478440.html 2. 配置tomcat 修改server.xml文件 <!-- 使用 80 端口 (也可以使用其它端口)--> <Connector port"80" protocol"HTTP/1.1"connectionTimeout"200…

dedecms列表页面随机缩略图调用

如果要利用dedecms制作扁平化主题&#xff0c;大概也能够遇到相似的问题&#xff0c;那就是dedecms的缩略图机制&#xff0c;在没有缩略图的情况下显示单一的默认图片&#xff0c;如果是wordpress可以很方便的定义函数调用随机的缩略图&#xff0c;即便是在没有设置缩略图并且文…

使用地图触发功能处理相干事件

本文介绍如何通过使用映射触发器来处理一致性事件。 基本上&#xff0c;建议使用Oracle Coherence中的分布式数据管理来研究Oracle Coherence API的基本配置和实现。 映射触发器是Oracle Coherence提供最高度定制的缓存管理系统的最重要功能之一。 MapTrigger代表一个功能代理…

阿里云服务器mysql莫名丢失_mysql数据库丢失

mysql数据库丢失云服务器(Elastic Compute Service&#xff0c;简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备&#xff0c;让您像使用水、电、天然气等公共资源一样便捷、高…

01-HTML深入

1.1 浏览器的工作原理 把一些标签解析成用户可视化的页面 1.2 HTML中的标签与元素 在HTML中以<xx>开始&#xff0c;以</xx>结束&#xff0c;比如<html></html>等。 标签和其内容统称为元素&#xff0c;比如&#xff1a;<xx>h5</xx> 元素…

gitlab使用_使用 Docker 部署 Gitlab

GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的web服务&#xff0c;具有wiki和issue跟踪功能。GitLab是当前应用非常广泛的源代码管理系统。1. 安装docker引擎并启动2. 获取gitlab镜像包查看下载好的镜像3. 在…

js--webSocket入门

Websocket 1.websocket是什么&#xff1f; WebSocket是为解决客户端与服务端实时通信而产生的技术。其本质是先通过HTTP/HTTPS协议进行握手后创建一个用于交换数据的TCP连接&#xff0c; 此后服务端与客户端通过此TCP连接进行实时通信。 2.websocket的优点 以前我们实现推送技术…

node.js继承

person.js module.exports function(){   this.name "person";   this.sleep function(){     console.log("sleep in the night");   }   this.eat function(){     console.log(eat food);   }} student.js var util require(&qu…

研究死锁–第5部分:使用显式锁定

在我的上一个博客中&#xff0c;我研究了使用Java的传统synchronized关键字和锁排序来修复破碎的&#xff0c;死锁的余额转移示例代码。 但是&#xff0c;有一种替代方法称为显式锁定。 这里&#xff0c;将锁定机制称为显式而非隐式的想法是&#xff0c; 显式表示它不是Java语…

mysql 经典入门教程_MySQL 经典入门教程

MySQL 经典入门教程1 定义数据库中的表&#xff1a;一行叫一条记录。每一列叫一个属性&#xff0c;或一个字段。主键&#xff1a;表中的某个特殊字段&#xff0c;具有唯一的确定的值&#xff0c;可以根据该字段唯一的确定一条记录外键&#xff1a;表中的某个字段的值为另一张表…

druid连接池初始化慢_7、SpringBoot -连接池(Durid)

一导入相关核心包<dependencies>二 在application.ymlspring三、配置Druid Datasource(可选)Configuration五、监控访问 http://localhost:8080/druid&#xff0c; 使用上面配置的账号密码。四、自动配置原理源代码Configuration说明DataSourceProperties 配置相关 首先找…

负载均衡与反向代理

如果用域名 映射多了Ip &#xff1b; 外网应该用来实现 GSLB 1 轮询pstream nginxDemo { server 127.0.0.1:8081; server 127.0.0.1:8082; } 最少链接web请求会被转发到连接数最少的服务器上。 upstream nginxDemo { least_conn; server 127.0.…

使用工厂方法模式设计最佳实践

在前面的“设计模式”示例中&#xff0c;我们解释了当今常用的“工厂”模式。 在本节中&#xff0c;我们将了解具有更多抽象的更高级的解决方案。 该模式称为工厂方法设计模式。 定义&#xff1a; Factory方法模式提供了一种用于创建对象的方法&#xff0c;但是将对象创建委托…

偏导数

引入 一元函数导数&#xff1a; 在一元函数中&#xff0c;我们已经知道导数就是函数的变化率&#xff08;对于一个一元函数&#xff0c;x增大了多少&#xff0c;y增大了多少&#xff0c;这个就是变化率&#xff09;。对于二元函数我们同样要研究它的“变化率”。在xOy平面内&am…