Python之学生信息管理系统

目录

一、基础界面实现

 1、主函数

2、保持循环,获取用户需求

 二、函数实现模块功能

1、添加学生信息

2、删除学生信息

 3、修改学生信息

4、查找全部学生信息

5、退出系统

三、整合代码

1、 完整代码

2、完整实现过程


实现

打印功能菜单、添加学生信息、删除学生信息、修改学生信息、显示学生信息、退出系统,并且需要接收用户的输入,在根据输入内容调用相应函数实现相应功能,模板图如下:

一、基础界面实现

 1、主函数

定义主函数main,并通过定义print_menu()函数输打印学生管理系统菜单

#打印功能菜单
def print_menu():print('='*30)print('学生管理系统')print('1.添加学生信息')print('2.删除学生信息')print('3.修改学生信息')print('4.显示所有学生信息')print('0.退出系统')print('')#定义主函数
def main():print_menu()
if __name__ == "__main__":main()

2、保持循环,获取用户需求

(1)while True循环:使系统菜单一直保持循环,为后面实现用户选择退出系统后,系统才结束循环作铺垫

(2)变量key:将获取到的用户需要实现的功能进行存储

(3)if循环:多分支循环,再分别实现各个模块的功能

#定义主函数
def main():while True:print_menu()key = input('请输入功能对应的数字:')if key == '1':#添加学生信息passelif key == '2':#删除学生信息passelif key == '3':#修改学生信息passelif key == '4':#查找全部学生信息passelif key == '0':#退出系统passelse:print('输入有误')

 二、函数实现模块功能

1、添加学生信息

(1)name,sex,phone:存储用户输入的新学生的姓名,性别,手机号码信息

(2)new_info():定义成一个字典,通过键值对的形式,存储当前学生的所有信息

(3)append():列表的添加,将当前的字典存入列表,作为列表的一个元素

(4)stu_info:定义了一个列表用来存储所有的学生信息

#定义一个列表来存储所有学生信息
stu_info = []#添加学生信息
def add_stu_info():name = input('请输入新学生的姓名:')sex = input('请输入新学生的性别:')phone = input('请输入新学生的手机号码:')new_info = dict()#定义一个字典new_info['name'] = namenew_info['sex'] = sexnew_info['phone'] = phonestu_info.append(new_info)

2、删除学生信息

(1)len():进入删除操作前先判断学生信息表是否为空

①为空:输出学生信息表为空,直接跳出删除操作

②不空:通过del_num变量记录用户需要删除的学生序号

(2)记录好要删除的学生序号还需要进一步判断输入的序号是否有误

①为flase:输出要删除的序号有误,跳出删除操作

②为true:通过del列表的删除操作进行删除对应序号的学生信息,并输出删除成功

#删除学生信息
def del_stu_info(student):if len(stu_info) != 0:del_num = int(input('请输入要删除的序号:')) - 1if del_num < len(stu_info):del student[del_num]print(f'删除指定序号:{del_num+1}成功')else:print('要删除的序号有误')else:print('学生信息表为空')

 3、修改学生信息

(1)len():进入修改操作前先判断学生信息表是否为空

①为空:输出学生信息表为空,直接跳出修改操作

②不空:通过rev_num变量记录用户需要修改的学生序号

(2)记录好要修改的学生序号还需要进一步判断输入的序号是否有误

①为flase:输出要修改的序号有误,跳出修改操作

②为true:通过rev_name、rev_sex、rev_phone变量记录修改后学生的信息

(3)stu_info[][]:通过列表修改元素的方法,将新的信息替换旧的信息

#修改学生信息
def rev_stu_info():if len(stu_info) != 0:rev_num = int(input('请输入要修改学生的序号:')) - 1if rev_num >= len(stu_info):print("要修改的序号有误")else:rev_name = input('请输入要修改学生的姓名:')rev_sex = input('请输入要修改学生的性别:')rev_phone = input('请输入要修改学生的手机:')stu_info[rev_num]['name'] = rev_namestu_info[rev_num]['sex'] = rev_sexstu_info[rev_num]['phone'] = rev_phoneelse:print('学生信息表为空')

4、查找全部学生信息

(1)len():进入查找操作前先判断学生信息表是否为空

①为空:输出学生信息表为空,直接跳出查找操作

②不空:输出学生信息如下

(2)i:序号,记录并输出学生数量

(3)for循环:逐个输出列表元素

#查找全部学生信息
def show_stu_info():if len(stu_info) != 0:print('学生的信息如下:')print('=' * 30)print('序号  姓名  性别  手机号码')i = 1for temp_info in stu_info:print("%d  %s  %s  %s" %(i,temp_info['name'],temp_info['sex'],temp_info['phone']))i += 1else:print('学生信息表为空')

5、退出系统

(1)quit_confirm:再次询问用户是否退出,并记录

(2)if循环:判断用户输入的是Yes还是No

①break:用户输入Yes,即确定退出,跳出while True这个死循环

②coninue:用户输入No,即不退出,则继续新一轮的while True循环

#定义主函数
def main():while True:print_menu()key = input('请输入功能对应的数字:')if key == '1':#添加学生信息passelif key == '2':#删除学生信息passelif key == '3':#修改学生信息passelif key == '4':#查找全部学生信息passelif key == '0':#退出系统quit_confirm = input('亲,真的要退出么?(Yes/No):')if quit_confirm == 'Yes':breakelif quit_confirm == 'No':continueelse:print('输入有误,请重新输入')else:print('输入有误')

三、整合代码

1、 完整代码

#定义一个列表来存储所有学生信息
stu_info = []#打印功能菜单
def print_menu():print('=' * 30)print('学生管理系统')print('1.添加学生信息')print('2.删除学生信息')print('3.修改学生信息')print('4.显示所有学生信息')print('0.退出系统')print('=' * 30)#添加学生信息
def add_stu_info():name = input('请输入新学生的姓名:')sex = input('请输入新学生的性别:')phone = input('请输入新学生的手机号码:')new_info = dict()#定义一个字典new_info['name'] = namenew_info['sex'] = sexnew_info['phone'] = phonestu_info.append(new_info)#删除学生信息
def del_stu_info(student):if len(student) != 0:del_num = int(input('请输入要删除的序号:')) - 1if del_num < len(stu_info):del student[del_num]print(f'删除指定序号:{del_num+1}成功')else:print('要删除的序号有误')else:print('学生信息表为空')#修改学生信息
def rev_stu_info():if len(stu_info) != 0:rev_num = int(input('请输入要修改学生的序号:')) - 1if rev_num >= len(stu_info):print("要修改的序号有误")else:rev_name = input('请输入要修改学生的姓名:')rev_sex = input('请输入要修改学生的性别:')rev_phone = input('请输入要修改学生的手机:')stu_info[rev_num]['name'] = rev_namestu_info[rev_num]['sex'] = rev_sexstu_info[rev_num]['phone'] = rev_phoneelse:print('学生信息表为空')#查找全部学生信息
def show_stu_info():if len(stu_info) != 0:print('学生的信息如下:')print('=' * 30)print('序号  姓名  性别  手机号码')i = 1for temp_info in stu_info:print("%d  %s  %s  %s" %(i,temp_info['name'],temp_info['sex'],temp_info['phone']))i += 1else:print('学生信息表为空')#定义主函数
def main():while True:print_menu()key = input('请输入对应的功能的数字:')if key == '1':#添加学生信息add_stu_info()elif key == '2':#删除学生信息del_stu_info(stu_info)elif key == '3':#修改学生信息rev_stu_info()elif key == '4':#显示所有学生信息show_stu_info()elif key == '0':#退出系统quit_confirm = input('亲,真的要退出么?(Yes/No):')if quit_confirm == 'Yes' or quit_confirm == 'yes' or quit_confirm == 'YES':breakelif quit_confirm == 'No' or quit_confirm == 'no' or quit_confirm == 'NO':continueelse:print('输入有误,请重新输入')else:print('输入有误,请重新输入')if __name__=='__main__':main()

2、完整实现过程

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

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

相关文章

注解方式优雅的实现Redisson分布式锁

1.前言 随着微服务的快速推进&#xff0c;分布式架构也得到蓬勃的发展&#xff0c;那么如何保证多进程之间的并发则成为需要考虑的问题。因为服务是分布式部署模式&#xff0c;本地锁Reentrantlock和Synchnorized就无法使用了&#xff0c;当然很多同学脱口而出的基于Redis的se…

使用canvas实现代码雨高级升阶版【附带源码和使用方法】

文章目录 前言基本绿色的彩色版本飘散雪花状后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端面试 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&…

C++ -- 每日选择题 -- Day2

第一题 1. 下面代码中sizeof(A)结果为&#xff08;&#xff09; #pragma pack(2) class A {int i;union U{char str[13];int i;}u;void func() {};typedef char* cp;enum{red,green,blue}color; }; A&#xff1a;20 B&#xff1a;21 C&#xff1a;22 D&#xff1a;24 答案及解析…

windows文件删除权限

一、普通文件 这里指的是所有可以被随意删除的文件。 二、可更改权限的文件 如果想要删除的文件无法被删除&#xff0c;那大概是权限不够&#xff0c;这时候&#xff1a;鼠标右键、属性、安全、编辑、选择相应的组或用户&#xff08;如果不知道哪个可以全选&#xff0c;反正…

MySQL C代码连接

环境&#xff1a;5.7.42-0ubuntu0.18.04.1 (Ubuntu) mysql接口介绍 初始化mysql指针 用来生成MySQL对象&#xff0c;返回值为MySQL*&#xff0c;MySQL*是MySQL对象的指针。 MySQL在mysql.h中是一个结构体 链接数据库 初始化完毕之后&#xff0c;必须先链接数据库&#xff…

App测试、H5测试及小程序测试

文章目录 前言一、App常见测试要点1.App功能测试1.1.App安装与卸载1.2.App升级测试1.3.App登陆测试1.4.离线测试1.5.触屏及操作测试1.6.App消息推送测试 2.AppUI界面测试3.App兼容性测试-适配/手机适配4.App中断测试5.App网络测试6.App安全测试7.App性能测试8.App测试与web测试…

数据结构(六):堆介绍及面试常考算法

一、堆介绍 1、定义 堆是一种图的树形结构&#xff0c;被用于实现“优先队列”&#xff08;priority queues&#xff09;。优先队列是一种数据结构&#xff0c;可以自由添加数据&#xff0c;但取出数据时要从最小值开始按顺序取出。在堆的树形结构中&#xff0c;各个顶点被称…

2023.11.27 使用anoconda搭建tensorflow环境

2023.11.27 使用anoconda搭建tensorflow环境 提供一个简便安装tensorflow的方法 1. 首先安装anoconda&#xff0c;安装过程略&#xff0c;注意安装的时候勾选安装anoconda prompt 2. 进入anoconda prompt 3. 建立python版本 conda create -n tensorflow1 python3.84. 激活t…

融资经理简历模板

这份简历内容&#xff0c;以综合柜员招聘需求为背景&#xff0c;我们制作了1份全面、专业且具有参考价值的简历案例&#xff0c;大家可以灵活借鉴。 融资经理简历在线编辑下载&#xff1a;百度幻主简历 求职意向 求职类型&#xff1a;全职 意向岗位&#xff1a;融资经理 …

VIR-SLAM代码分析3——VIR_VINS详解之estimator.cpp/.h

前言 续接上一篇&#xff0c;本本篇接着介绍VIR-SLAM中estimator.cpp/.h文件的函数&#xff0c;尤其是和UWB相关的相比于VINS改动过的函数&#xff0c;仍然以具体功能情况代码注释的形式进行介绍。 重点函数介绍 优化函数&#xff0c;代码是先优化&#xff0c;后边缘化。 …

java学校高校运动会报名信息管理系统springboot+jsp

课题研究方案&#xff1a; 结合用户的使用需求&#xff0c;本系统采用运用较为广泛的Java语言&#xff0c;springboot框架&#xff0c;HTML语言等关键技术&#xff0c;并在idea开发平台上设计与研发创业学院运动会管理系统。同时&#xff0c;使用MySQL数据库&#xff0c;设计实…

计算机网络(二)

&#xff08;八&#xff09;客户端软件设计的细节 A、解析协议号 客户端可能会需要通过协议名指定协议&#xff0c;但是Socket接口是用协议号指定的&#xff0c;这时候我们就需要使用getprotobyname()函数实现协议名到协议号的转换&#xff0c;该函数会返回一个指向protoent的…