python实现学生管理系统源码
作者:Henrik-Yao 发布时间:2023-05-29 22:05:16
标签:python,学生,管理系统
本文实例为大家分享了python实现学生管理系统的具体代码,供大家参考,具体内容如下
一.面向过程版
import os
stu_list = []
def show_menu():
print('1.添加学生')
print('2.删除学生')
print('3.修改学生信息')
print('4.查询单个学生信息')
print('5.查询所有学生信息')
print('6.退出系统')
def insert_student():
name = input('请输入学生名字:')
for stu in stu_list:
if stu['name'] == name:
print('.........学生信息已存在........')
return
age = input('请输入学生年龄:')
gender = input('请输入学生性别:')
stu_dict = {'name': name, 'age': int(age), 'gender': gender}
stu_list.append(stu_dict)
print("学生信息添加成功!")
def remove_student():
name = input('请输入要操作的学生的名字:')
for stu in stu_list:
if stu['name'] == name:
stu_list.remove(stu)
print('删除成功!')
break
else:
print('........该学生信息不存在,无法删除.........')
def modify_student():
name = input('请输入要操作的学生的名字:')
for stu in stu_list:
if stu['name'] == name:
stu['age'] = int(input('请输入新的年龄:'))
print('修改成功!')
break
else:
print('........该学生信息不存在,无法修改.........')
def search_student():
name = input('请输入要操作的学生的名字:')
for stu in stu_list:
if stu['name'] == name:
print(f'姓名:{stu["name"]},年龄:{stu["age"]},性别:{stu["gender"]}')
break
else:
print('........该学生信息不存在.......')
def show_all_stu():
if len(stu_list):
for stu in stu_list:
print(f'姓名:{stu["name"]},年龄:{stu["age"]},性别:{stu["gender"]}')
else:
print("目前没有学生信息!")
def save():
f = open('student.txt', 'w')
f.write(str(stu_list))
f.close()
def read_file():
global stu_list
if os.path.exists('student.tct'):
f = open('student.txt', 'r', encoding='utf-8')
buf = f.read()
if buf:
stu_list = eval(buf)
f.close()
def main():
read_file()
while True:
show_menu()
opt = input('请输入用来选择的编号:')
if opt == '1':
print('1.添加学生')
insert_student()
elif opt == '2':
print('2.删除学生')
remove_student()
elif opt == '3':
print('3.修改单个学生信息')
modify_student()
elif opt == '4':
print('查询单个学生信息')
search_student()
elif opt == '5':
print('5.查询所有学生信息')
show_all_stu()
elif opt == '6':
print('欢迎下次使用本系统')
save()
break
else:
print('输入有误,请重新输入')
continue
input('........回车键继续操作........')
main()
二.面向对象版
1.工程文件
2.main.py
import student_manage_sysytem as sms
if __name__ == '__main__':
stu_sms = sms.StudenManagerSystem()
stu_sms.start()
3.student.py
class Student():
def __init__(self, stu_id, name, age, gender):
self.sut_id = stu_id
self.name = name
self.age = age
self.gender = gender
def __str__(self):
return f"{self.sut_id},{self.name},{self.age},{self.gender}"
4.student_manage_system.py
import student
class StudenManagerSystem():
def __init__(self):
self.stu_dict = {}
@staticmethod
def __show_menu():
print('1.添加学生')
print('2.删除学生')
print('3.修改学生信息')
print('4.查询单个学生信息')
print('5.查询所有学生信息')
print('6.退出系统')
def __insert_student(self):
stu_id = input('请输入学生学号:')
if stu_id in self.stu_dict:
print('学生信息已经存在,不需要重复添加')
return
name = input('请输入学生名字:')
age = input('请输入学生年龄:')
gender = input('请输入学生性别:')
stu = student.Student(stu_id, name, age, gender)
self.stu_dict[stu_id] = stu
def __removw_student(self):
stu_id = input('请输入学号:')
if stu_id in self.stu_dict:
del self.stu_dict[stu_id]
print('学生已经删除')
else:
print('学生信息不存在,无法删除')
def __modify_student(self):
stu_id = input('请输入学号:')
if stu_id in self.stu_dict:
stu = self.stu_dict[stu_id]
stu.age = input('请输入新的年龄:')
print('信息已经修改完毕')
else:
print('学生信息不存在,无法修改')
def __search_student(self):
stu_id = input('请输入学号:')
if stu_id in self.stu_dict:
stu = self.stu_dict[stu_id]
print(stu)
else:
print('学生信息不存在')
def __save(self):
f = open('student.txt', 'w', encoding='utf-8')
for stu in self.stu_dict.values():
f.write(str(stu) + '\n')
f.close()
def __load_info(self):
try:
f = open('student.txt', 'r', encoding='utf-8')
buf_list = f.readlines()
for buf in buf_list:
buf = buf.strip()
info_list = buf.split(',')
stu = student.Student(*info_list)
stu_id = info_list[0]
self.stu_dict[stu_id] = stu
f.close()
except Exception:
pass
def __show_all_info(self):
for stu in self.stu_dict.values():
print(stu)
def start(self):
self.__load_info()
while True:
self.__show_menu()
opt = input('请输入用来选择的编号:')
if opt == '1':
print('1.添加学生')
self.__insert_student()
elif opt == '2':
print('2.删除学生')
self.__removw_student()
elif opt == '3':
print('3.修改单个学生信息')
self.__modify_student()
elif opt == '4':
print('查询单个学生信息')
self.__search_student()
elif opt == '5':
print('5.查询所有学生信息')
self.__show_all_info()
elif opt == '6':
self.__save()
print('欢迎下次使用本系统')
break
else:
print('输入有误,请重新输入')
continue
input('........回车键继续操作........')
来源:https://blog.csdn.net/qq_50216270/article/details/112914099
0
投稿
猜你喜欢
- 设计是简单的如果你知道要放的东西该放到哪。曾经在某个电子杂志里看到一篇关于如何在平面设计中偷懒的文章,引发了我的一些思考,在平面设计中有这么
- 我想从文件读数据的话,要比直接从数据库快一些吧(个人观点),昨天测试了读出6000条新闻,读数据库用了23579毫秒,读文件只用了123毫秒
- 实际开发过程中,我们经常会被各种宽度,高度计算搞晕。尤其是使用了rem的计算方式,自适应布局难倒一大片程序员。为了解决这类问题,我觉得可以利
- 欢欢喜喜辞旧岁 🐰🐰🐰辞旧迎新之际,来 AI Studio 一起 #欢喜迎兔年# !分享不同新年风俗,共享一段快乐时光!🐰🐰🐰p>下面
- 刚才运行了一段代码,来查看Request.ServerVariables里面有多少值,看了一下,共50个!代码<%=Request.S
- 如何在网站上提供音乐下载?为用户提供歌曲下载,一般有两种方式,一是直接通过Http,浏览器下载,二是通过ftp协议下载。我们来用Http和浏
- 首先声明:本人虽然在web前端岗位干了好多年,但无奈岗位对技术要求不高。html,css用的比较多,JavaScript自己原创的很少,基本
- QZONE平台的相册功能为保证加载速度一直以来以简洁的图片排列查看模式呈现相片,随着市场上各类相册产品推陈出新,用户越来越强烈的要求个人相册
- 在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所
- SQL*DBA命令的安全性: 如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权限相关的命令只能分配给Oracle软
- 在项目里碰到需要把类似'450000'的数字转换为会计记账所用的格式,'450,000.00',分隔千分位和
- 在添加新记录时,有时候我们需要将部分动态内容自动添加到指定的文本域,例如上传一个文件后,将文件名自动添加到一个独立的记录框内,以
- 最近公司有一个日文项目,由于之前使用的是自己开发的中文CMS,并没有将语言包分离,在网站建设调试过程中出现了令人头疼的乱码问题。乱码出现的原
- 我要说的内容都是非常基础的内容,高手就免看了,如果看了欢迎给点意见啊。新手或者对低层还不是很了解的人可以看看,帮助理解与记忆。XMLHttp
- 我插入Mysql5的中文一直是乱码。但是直接使用mysqlAdmin,EMS等工具插入DB就不是乱码。而且我还可以使用程序正常地读出来。原因
- Asp中Server.ScriptTimeOut属性需要注意的一点Server.ScriptTimeout 这个属性给定Asp脚
- PHP PDO连接连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。连接到 MySQL<?php
- 我一直很难理解Javascript语言的继承机制。它没有"子类"和"父类"的概念,也没有"
- [原文地址] VS 2008 Performance Improvements[原文发表时间] Thursday, September 27
- 本文实例讲述了PHP日志LOG类定义与用法。分享给大家供大家参考,具体如下:<?php/*** PHP log 类 */class C