教你用Python实现简易版学生信息管理系统(含源码)
作者:飨喰__小天 发布时间:2022-07-21 23:40:00
一、项目分析
1、首先定义一个存放基础学生信息列表
格式:list = [{学号:姓名,年龄:num,成绩:num },{……}]
student1 = [\
{1:"jam",'age':17,'socer':99},
{2:'kol','age':18,'socer':89},
{3:'avlir','age':19,'socer':100}]
2、先搭建框架(主函数main())
if __name__ == '__main__':
while True:
menu()
key = input("输入选项数字 查询/输入 信息:")
if key == '1':
lookup() #打印指定学生信息
elif key == '2':
append() #添加新的学生信息
elif key == '3':
delete() #删除指定学生信息
elif key == '4':
allinformation() #打印所有信息
elif key == '5':
revise() #修改指定学生信息
elif key == '6':
save() #保存信息
elif key == '0':
print("确定退出?")
exit = input("输入yes退出:")
if exit == 'yes':
break
else:
print("输入错误,返回 ")
3、搭建好框架之后,这时候发现需要一个菜单界面(menu())
#页面
def menu():
print('-'*30)
print("欢迎来到学生管理系统")
print("1.输入学号查询成绩")
print("2.添加学生信息")
print("3.删除学生信息")
print("4.打印所有学生信息")
print("5.修改学生信息")
print("6.保存学生信息到指定文件")
print("0.退出系统")
print("-"*30)
4、接下来就是查询指定学生信息(lookup())。
列表下标从0开始,所以这里在输入学号后面加了 “-1”
#打印信息
def lookup():
sid = int(input("输入查询学号:"))-1 #学号
if sid > len(student1)-1:
print("输入错误,返回菜单")
else:
print(student1[sid]) #输出信息
input("按回车键继续")
5、接下来是添加学生信息(append())
因为列表元素是用字典存储,所以这里用到字典的添加元素
#添加信息
def append():
newsid = eval(input('输入新同学学号(从4开始):'))
newname = eval(input('输入新同学姓名:'))
newage = eval(input('输入新同学年龄:'))
newsocer = eval(input('输入新同学成绩:'))
newstudent1 = {}
newstudent1[newsid] = newname #添加 学号、姓名
newstudent1['age'] = newage #添加年龄
newstudent1['socer'] = newsocer #添加成绩
student1.append(newstudent1) #加入列表
input("按回车键继续")
6、能添加也就能删除(delete())
#删除信息
def delete():
did = int(input("输入需要删除的成绩对应的学号:"))-1
del student1[did] #删除指定信息
input("按回车键继续")
7、然后就是输出所有信息(allinformation())
这里遍历输出列表元素时,用到了格式化字符串的函数 str.format()
##输出所有学生信息
def allinformation():
print("所有信息如下:")
i = 1
for show in student1:
print("{}".format(show)) #打印学生信息
i += 1
input("按回车键继续")
8、现在还差修改信息(revise())
也是字典修改值得方法,通过键来修改对应值
##修改信息
def revise():
resid = int(input("输入要修改的学生学号:"))-1
r = input("要修改的对象(1.年龄;2.成绩;否则,都修改):")
if r == '1':
newage = input("修改后的年龄")
student1[resid]['age'] = newage
elif r == '2':
newsocer = input("修改后的成绩")
student1[resid]['socer'] = newsocer
else:
newage = input("修改后的年龄")
newsocer = input("修改后的成绩")
student1[resid]['socer'] = newsocer
student1[resid]['age'] = newage
input("按回车键继续")
9、差点忘了还得保存一下信息……(save())
我把它保存在与代码同一文件中student.txt文件中,引入路径时需要绝对路径
##保存学生信息
def save():
f = open('student.txt','w') #打开文件
f.write(str(student1)) #写入文件
f.close() #关闭文件
input("保存成功按回车键继续")
然后,完整代码如下:
'''
Created on 2021年6月13日
学生信息系统
列表存储学生信息,通过字典——键进行学生信息访问
@author: 小天
'''
student1 = [\
{1:"jam",'age':17,'socer':99},
{2:'kol','age':18,'socer':89},
{3:'avlir','age':19,'socer':100}]
#页面
def menu():
print('-'*30)
print("欢迎来到学生管理系统")
print("1.输入学号查询成绩")
print("2.添加学生信息")
print("3.删除学生信息")
print("4.打印所有学生信息")
print("5.修改学生信息")
print("6.保存学生信息到指定文件")
print("0.退出系统")
print("-"*30)
#打印信息
def lookup():
sid = int(input("输入查询学号:"))-1 #学号
if sid > len(student1)-1:
print("输入错误,返回菜单")
else:
print(student1[sid]) #输出信息
input("按回车键继续")
#添加信息
def append():
newsid = eval(input('输入新同学学号(从4开始):'))
newname = eval(input('输入新同学姓名:'))
newage = eval(input('输入新同学年龄:'))
newsocer = eval(input('输入新同学成绩:'))
newstudent1 = {}
newstudent1[newsid] = newname #添加 学号、姓名
newstudent1['age'] = newage #添加年龄
newstudent1['socer'] = newsocer #添加成绩
student1.append(newstudent1) #加入列表
input("按回车键继续")
#删除信息
def delete():
did = int(input("输入需要删除的成绩对应的学号:"))-1
del student1[did] #删除指定信息
input("按回车键继续")
##输出所有学生信息
def allinformation():
print("所有信息如下:")
i = 1
for show in student1:
print("{}".format(show)) #打印学生信息
i += 1
input("按回车键继续")
##修改信息
def revise():
resid = int(input("输入要修改的学生学号:"))-1
r = input("要修改的对象(1.年龄;2.成绩;否则,都修改):")
if r == '1':
newage = input("修改后的年龄")
student1[resid]['age'] = newage
elif r == '2':
newsocer = input("修改后的成绩")
student1[resid]['socer'] = newsocer
else:
newage = input("修改后的年龄")
newsocer = input("修改后的成绩")
student1[resid]['socer'] = newsocer
student1[resid]['age'] = newage
input("按回车键继续")
##保存学生信息
def save():
f = open('student.txt','w') #打开文件
f.write(str(student1)) #写入文件
f.close() #关闭文件
input("保存成功按回车键继续")
if __name__ == '__main__':
while True:
menu()
key = input("输入选项数字 查询/输入 信息:")
if key == '1':
lookup() #打印指定学生信息
elif key == '2':
append() #添加新的学生信息
elif key == '3':
delete() #删除指定学生信息
elif key == '4':
allinformation() #打印所有信息
elif key == '5':
revise() #修改指定学生信息
elif key == '6':
save() #保存信息
elif key == '0':
print("确定退出?")
exit = input("输入yes退出:")
if exit == 'yes':
break
else:
print("输入错误,返回 ")
输出示例:
------------------------------
欢迎来到学生管理系统
1.输入学号查询成绩
2.添加学生信息
3.删除学生信息
4.打印所有学生信息
5.修改学生信息
6.保存学生信息到指定文件
0.退出系统
------------------------------
输入选项数字 查询/输入 信息:2
输入新同学学号(从4开始):4
输入新同学姓名:'dfg'
输入新同学年龄:17
输入新同学成绩:78
按回车键继续
------------------------------
欢迎来到学生管理系统
1.输入学号查询成绩
2.添加学生信息
3.删除学生信息
4.打印所有学生信息
5.修改学生信息
6.保存学生信息到指定文件
0.退出系统
------------------------------
输入选项数字 查询/输入 信息:6
按回车键继续
------------------------------
欢迎来到学生管理系统
1.输入学号查询成绩
2.添加学生信息
3.删除学生信息
4.打印所有学生信息
5.修改学生信息
6.保存学生信息到指定文件
0.退出系统
------------------------------
输入选项数字 查询/输入 信息:4
所有信息如下:
{1: 'jam', 'age': 17, 'socer': 99}
{2: 'kol', 'age': 18, 'socer': 89}
{3: 'avlir', 'age': 19, 'socer': 100}
{4: 'dfg', 'age': 17, 'socer': 78}
按回车键继续
------------------------------
欢迎来到学生管理系统
1.输入学号查询成绩
2.添加学生信息
3.删除学生信息
4.打印所有学生信息
5.修改学生信息
6.保存学生信息到指定文件
0.退出系统
------------------------------
输入选项数字 查询/输入 信息:3
输入需要删除的成绩对应的学号:4
按回车键继续
------------------------------
欢迎来到学生管理系统
1.输入学号查询成绩
2.添加学生信息
3.删除学生信息
4.打印所有学生信息
5.修改学生信息
6.保存学生信息到指定文件
0.退出系统
------------------------------
输入选项数字 查询/输入 信息:6
按回车键继续
------------------------------
欢迎来到学生管理系统
1.输入学号查询成绩
2.添加学生信息
3.删除学生信息
4.打印所有学生信息
5.修改学生信息
6.保存学生信息到指定文件
0.退出系统
------------------------------
输入选项数字 查询/输入 信息:0
确定退出?
输入yes退出:yes
来源:https://blog.csdn.net/m0_48278789/article/details/117899186


猜你喜欢
- 在判断列表是否为空时,你更喜欢哪种方式?决定因素是什么?在 Python 中有很多检查列表是否是空的方式,在讨论解决方案前,先说一下不同方法
- js 日期 获取今天、昨天、明天第一个函数function getDay(day){ var today = ne
- 一.做数据二.搭建神经网络三.训练四.对比测试结果注意:测试过程中,一定要注意模式切换Pytorch的学习——过拟合过拟合过拟合是当数据量较
- 概述Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。Redis从它的许多竞争继承
- 我们在制作网页时,有时会遇到这样的情况:根据用户的选择,显示不同的内容。比如,制作一个登录网页,上面有
- 实现过程最近在尝试openai的相关函数,所以今天就来盘点盘点下 createChatCompletion 函数,听说是专门为了聊天创立的a
- 枚举类Enum枚举类,在企业开发中用的比较多当我们需要定义常量时,一个办法是用大写的变量通过整数来定义,例如月份:# 当项目中需要使用12个
- 阻塞定义当来自应用程序的第一个连接控制锁而第二个连接需要相冲突的锁类型时,将发生阻塞。其结果是强制第二个连接等待,而在第一个连接上阻塞。不管
- gRPC是Google发起的一个开源RPC框架,使用HTTP/2传输协议,使用Protocol Buffers编码协议,相比RESTful框
- 一、问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;
- 终归结出以下解决方法: 1.清除MYSQL的安装目录,默认是C:\Program Files 2.清除MYSQL数据存放目录,一般在C:\D
- 1、如果之前已经安装我们先卸载一下yum -y remove php*2、由于linux的yum源不存在php7.x,所以我们要更改yum源
- 在vue中已经不像jq那样直接操作dom了,如果要指向当前选中项时,就不能再用jq的思路来做了,方法如下:当指向一个状态的时候,只让指向的状
- 项目github地址:bitcarmanlee easy-algorithm-interview-and-practice1.Python中
- OCR of Hand-written Data using kNNOCR of Hand-written Digits我们的目标是构建一个
- 前言语音合成技术能将用户输入的文字,转换成流畅自然的语音输出,并且可以支持语速、音调、音量设置,打破传统文字式人机交互的方式,让人机沟通更自
- php中主要用到的就是要用到fread()和fwirte()。而静态页面生成了之后,就会牵扯到修改的问题。这里可以用到正则匹配的方法来替换模
- 1.from_unixtime的语法及用法(1)语法:from_unixtime(timestamp ,date_format)即from_
- 1. 准备工作下载源码包wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.b
- 使用python实现单向循环链表,供大家参考,具体内容如下单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链接区,数据区存储数据,