Python学⽣信息管理系统案例——代码判断磁盘我们需要导⼊os这样的模块
import os
filename = “”
def main():
# True保证开始就能显⽰主菜单
while True:
menm()
choice = int(input(“请选择”))
if choice in [0, 1, 2, 3, 4, 5, 6, 7]:
if choice == 0:
answer = input(“您确定要退出系统嘛?y/n”)
if answer “y” or answer == “Y”:
print(“谢谢您的使⽤”)
break # 退出系统
else:
continue
elif choice == 1:
insert() #录⼊学⽣信息
elif choice == 2:
search() #查学⽣信息
elif choice == 3:
delete() # 删除学⽣信息
elif choice == 4:
modify() # 修改学⽣信息
elif choice == 5:
sort() # 对学⽣成绩排序
elif choice == 6:
total() # 统计学⽣总⼈数
elif choice == 7:
show() # 显⽰所有学⽣信息
def menm():
print("=学⽣信息管理系统==")
print("----------------------------功能菜单------------------------")
print("\t\t\t\t\t1.录⼊学⽣信息")
print("\t\t\t\t\t2.查学⽣信息")
print("\t\t\t\t\t3.删除学⽣信息")
print("\t\t\t\t\t4.修改学⽣信息")
print("\t\t\t\t\t5.排序")
print("\t\t\t\t\t6.统计学⽣总⼈数")
print("\t\t\t\t\t7.显⽰所有学⽣信息")
print("\t\t\t\t\t0.退出系统")
print("---------------------------------------------------------")
def insert():
student_list = []
while True:
id = input(“请输⼊ID(如1001):”)
# 空字符串的布尔值为False,判断是否为空字符串
if not id:
break
name = input(“请输⼊姓名:”)
# 判断是否为空字符串
if not name:
break
# 对输⼊的成绩进⾏判断,需要异常处理机制
try:
english = int(input(“请输⼊英语成绩:”))
python = int(input(“请输⼊python成绩:”))
getsavefilenamejava = int((input(“请输⼊Java成绩:”)))
except:
print(“输⼊⽆效,不是整数类型,请重新输⼊”)
# 使⽤continue返回到while True
continue
# 将录⼊的学⽣信息保存到字典中
student = {“id”: id, “name”: name, “english”: english, “python”: python, “java”: java} # 将学⽣信息添加到列表中
student_list.append(student)
answer = input(“是否继续添加?y/n \n”)
if answer == “y”:
continue
else:
break
# 调⽤save()函数
save(student_list)
print("学⽣信息录⼊完毕")
def save(list):
# ⾸先是需要打开⽂件有两种⽅式,1、追加 2、写⼊
# 当⽂件中没有数据,则以写⼊的⽅式打开⽂件
# for循环中就是对打开⽂件写⼊的操作
try:
# 以追加的形式打开⽂件filename,如果没有的话程序就可能出错,则需要处理except
stu_txt = open(filename, “a”, encoding=“utf-8”)
except:
# 如果没有的话,就以写⼊的⽅式打开⽂件
stu_txt = open(filename, “w”, encoding=“utf-8”)
# 遍历传⼊的list列表
for item in list:
# 将遍历得到的数据写⼊到⽂件中并换⾏
stu_txt.write(str(item)+"\n")
# 对⽂件进⾏资源关闭的操作
stu_txt.close()
def search():
# 声明⼀个列表
student_query = []
while True:
id = “”
name = “”
name = “”
if ists(filename):
# 是按ID查还是按姓名查
mode = input(“按ID查请输⼊1,按姓名查请输⼊2:”)
# 对输⼊的进⾏判断
if mode == “1”:
id = input(“请输⼊学⽣ID:”)
elif mode == “2”:
name = input(“请输⼊学⽣姓名:”)
else:
print(“您的输⼊有误,请从新输⼊”)
search()
# 以只读的⽅式打开⽂件
with open(filename, “r”, encoding=“utf-8”) as rfile:
# 将读取的内容以列表的形式存放在student中
student = adlines()
# 遍历student列表,并将其类型转换存放到⼀个字典中
for item in student:
d = dict(eval(item))
# 下⾯是对id和那么进⾏判断
# 如果id不等于空,并让其和字典中的id进⾏对⽐,相等则存放到student_query列表中
if id != “”:
if d[“id”] == id:
student_query.append(d)
elif name != “”:
if d[“name”] == name:
student_query.append(d)
# 显⽰查询结果
show_student(student_query)
#清空列表,是为了防⽌第⼆次查列表当中有数据
student_query.clear()
# 是否要继续查询
answer = input(“是否要继续查询?y/n\n”)
if answer == “y”:
continue
else:
break
else:
print(“暂未保存学⽣信息”)
# 跳出循环
return
def show_student(list):
# 对传进来的列表进⾏判断
if len(list) == 0:
print(“没有查询到学⽣信息,⽆数据显⽰”)
return
# 查到之后就要定义标题的显⽰格式
format_title = “{:12}\t{:10}\t{:8}”
print(format_title.format(“ID”, “姓名”, “英语成绩”, “Python成绩”, “Java成绩”, “总成绩”))# 查到之后定义内容的显⽰格式
format_data = “{:12}\t{:8}\t{:8}”
for item in list:
print(format_data.format(
<(“id”),
<(“name”),
<(“english”),
6}\t{:8}\t{:10}\t{:6}\t{:8}\t{:8}\t{:
<(“english”),
<(“python”),
<(“java”),
<(“english”)+(“python”)+(“java”)
))
def delete():
"""删除的整个逻辑如下:
1、⾸先输⼊要删除学⽣的id
2、判断学⽣是否在,如果存在则进⾏⽂件系统是否存在
3、如果存在就以只读的⽅式打开⽂件,并将从⽂件系统读取的内容保存到⼀个列表当中
4、如果系统⽂件不存在就先定义⼀个列表,并定义⼀个标记为False,默认是没有删除
5、以上是对⽂件系统的操作,下⾯就是对列表的判断----------------
6、如果列表存在,以只写的⽅式打开⽂件,因为要将删除的内容覆盖掉原有的内容
7、如果不存在,则打印⽆学⽣信息
8、最后对删除操作是否进⾏继续的操作
"""
while True:
student_id = input("请输⼊想要删除的学⽣的ID:")
# 不等于空意思就是该学⽣是存在的
if student_id != "":
# 判断⽂件系统中是否存在
if ists(filename):
# 存在,以只读的⽅式打开⽂件,并设置字符编码
with open(filename, 'r', encoding='utf-8') as file:
# 读取⽂件内容并存放在列表中
student_old = adlines()
# 不存在,定义⼀个列表
else:
student_old = []
flag = False # 标记是否删除,默认是没有删除的
# 对列表进⾏判断,如果为True,以只写的⽅式打开⽂件,因为要将删除的内容把原有的内容覆盖 if student_old:
with open(filename, "w", encoding="utf-8")as wfile:
d = {}
for item in student_old:
d = dict(eval(item)) # 将字符串转换为字典
# 对输⼊的id与字典中的id进⾏⽐较,如果不存在则写⼊
if d["id"] != student_id:
wfile.write(str(d)+"\n")
else:
# 表⽰已删除了
flag = True
if flag:
print(f"id为{student_id}的学⽣信息已被删除")
else:
print(f"没有到ID为{student_id}的学⽣信息")
# 如果没有从磁盘上读取到学⽣信息
else:
print("⽆学⽣信息")
break
show() # 删除后要重新显⽰所有学⽣信息
# 对删除操作是否继续判断
answer = input("是否继续删除?y/n\n")
if answer == "y":
continue
else:
break
def modify():
# 显⽰所有学⽣信息
show()
# 判断磁盘⽂件是否存在,如果存在以只读的⽅式打开⽂件
if ists(filename):
with open(filename, “r”, encoding=“utf-8”) as rfile: # 把读取到的内容放到列表当中
student_old = adlines()
else:
# 不存在就结束函数
return
student_id = input(“请输⼊要修改的学员的ID:”)
with open(filename, “w”, encoding=“utf-8”)as wfile: # 以只写的⽅式打开⽂件
for item in student_old:
# 对读取的字符串⽤eval进⾏转换,并将其存放到⼀个字典中d = dict(eval(item))
# 根据键来获取值
if d[“id”] == student_id:
print(“到学⽣信息,可以修改他的相关信息了!”)
# 进⼊循环通过相应键来修改对应的值
while True:
try:
d[“name”] = input(“请输⼊姓名:”)
d[“english”] = input(“请输⼊英语成绩”)
d[“python”] = input(“请输⼊python成绩”)
d[“java”] = input(“请输⼊Java成绩”)
except:
print(“您输⼊的有误,请重新输⼊”)
# 在输⼊正确⽆误的情况下则退出循环
else:
break
# 如果输⼊的没有错,就将修改的字典写⼊到⽂件系统中wfile.write(str(d)+"\n")
print(“修改成功”)
# 其他没有修改的内容,将还会继续写⼊到⽂件系统中
else:
wfile.write(str(d)+"\n")
answer = input(“是否继续修改其他学⽣信息?y/n\n”)
if answer == “y”:
modify()
else:
return
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论