今天我们来运用python进行实战,做一个学生管理系统项目,顺便对以前的知识点进行汇总和练习!
首先做一个项目不单单只是和我们以前一样,上去就打代码
而是需要我们对这个项目进行具体的分析以后,才去使用代码进行具体的实现
最后运用代码实现完毕以后,在对其项目进行调试更改才算完成
接下来就由鄙人带大家对这个学生管理系统项目进行逐步的实现.
客户和开发人员双向的一个说明书
这个需求分析就是一个基本的说明书,和客户进行协商(产品经理主要就是和客户对接)
这个需求分析就是系统开发的一个核心思想路线,开发工作主要就是围绕着需求分析进行开展(关键字(变量、函数、类名称)之类)
添加学生
删除学生
修改学生
查询学生
展现所有学生信息
统计平均分
统计及格率
退出程序
保存数据
我们都知道数据保存在什么地方?取决于数据的重要层次
学生信息显而易见是比较重要的信息,所以我们把这些信息保存在硬盘中的文件中
我们只能从元祖、列表、集合、字典中选择字典,其原因是方便我们对学生信息进行保存,记录
使用学号作为每个学生字典的键值,方便我们对信息进行查询和修改
对项目分析完以后,然后就是使用Python去实现学生管理系统.
# 导入os模块包
import os
# 创建一个字典,在其中放入初始数据,以学号做为学生信息的键
# all_dict = {"123": {"num": 123, "name": "张三", "age": 15, "python": 98},
# "223": {"num": 223, "name": "李四", "age": 78, "python": 2}}
# 将初始字典中已有的数据进行写入到硬盘的文件中进行保存
# 如果文件夹中没有我们目标文件的话,w操作可以创建一个
# with open("学生管理系统.txt","w",encoding="utf-8") as fing:
# fing.write(str(all_dict))
# 再定义一个新的空字典
all_dict = {}
# 定义一个函数,将文件中的数据读取到定义的新的空字典中
def fangfa():
# os.path.exists的意思是判断括号里的文件是否存在
if os.path.exists("学生管理系统.txt"):
# 将文件中的数据读取到新的字典中,使用utf-8进行读取
with open("学生管理系统.txt", "r", encoding="utf-8") as file:
ret = file.read()
# 由于新的字典是在函数外部,我们要对其进行更改的话
# 需要使用global函数 对其更改
global all_dict
# 将数据读取到以后,用eval函数返回到原来的类型.
# 将数据存到新的字典中
all_dict = eval(ret)
print("数据加载完成")
def add_func():
# while循环可以使用户操作完本功能以后,选择是否继续进行操作本功能
while True:
# 引导用户输入学号
little_put = input("请输入你的学号: ")
if little_put in all_dict:
# 如果已经存在,则无法添加
print("该用户已存在,无法添加")
else:
# 如果不存在的话,就引导用户进行注册
print("该用户不存在,请注册一个用户")
num_put = input("请输入你的学号: ")
name_put = input("请输入你的姓名: ")
age_put = input("请输入你的年龄: ")
python_put = input("请输入你的成绩: ")
# 输入完信息以后将信息添加到新的字典中
all_dict[num_put] = {"num": num_put, "name": name_put, "age": age_put, "python": python_put}
# 然后把添加以后的字典写入到文件中,w操作会对文件中的数据进行重新书写
# 刚好完成我们的添加功能
with open("学生管理系统.txt", "w", encoding="utf-8") as fing:
fing.write(str(all_dict))
print("上传信息成功")
re_minu = input("是否返回主菜单?是的话请输入1不返回的话输入任意值")
if re_minu == "1":
return
else:
continue
def del_func():
while True:
little_put = input("请输入你的学号: ")
if little_put in all_dict:
# 如果学号存在的话,删除该学生信息
del all_dict[little_put]
print("该用户已删除")
# 并且同步文件中的数据
with open("学生管理系统.txt", "w", encoding="utf-8") as fing:
fing.write(str(all_dict))
print("上传信息成功")
else:
# 如果不存在的话,那么则显示已经删除
print("该用户已经删了")
re_minu = input("是否返回主菜单?是的话请输入1不返回的话输入任意值")
if re_minu == "1":
return
else:
continue
def revise_func():
while True:
little_put = input("请输入你的学号: ")
if little_put in all_dict:
# 如果学号存在的话
# 那么就继续输入信息
name_put = input("请输入你的姓名: ")
age_put = input("请输入你的年龄: ")
python_put = input("请输入你的成绩: ")
new_dict = {'no': little_put, 'name': name_put, 'age': age_put, 'score': python_put}
# 修改字典中的值
all_dict[little_put] = new_dict
print("修改学员信息成功!")
with open("学生管理系统.txt", "w", encoding="utf-8") as fing:
fing.write(str(all_dict))
print("上传信息成功")
else:
# 如果不存在的话,就引导用户添加一个
print("该用户还不存在,请添加一个")
num_put = input("请输入你的学号: ")
name_put = input("请输入你的姓名: ")
age_put = input("请输入你的年龄: ")
python_put = input("请输入你的成绩: ")
all_dict[num_put] = {"num": num_put, "name": name_put, "age": age_put, "python": python_put}
with open("学生管理系统.txt", "w", encoding="utf-8") as fing:
fing.write(str(all_dict))
print("上传信息成功")
re_minu = input("是否返回主菜单?是的话请输入1不返回的话输入任意值")
if re_minu == "1":
return
else:
continue
def query_func():
while True:
little_put = input("请输入你的学号: ")
if little_put in all_dict:
# 如果存在直接输出信息
print("该用户的信息如下: ")
print(all_dict[little_put])
else:
# 不存在的话,无法查询,引导用户注册
print("该用户不存在无法查询")
print("请先注册!")
num_put = input("请输入你的学号: ")
name_put = input("请输入你的姓名: ")
age_put = input("请输入你的年龄: ")
python_put = input("请输入你的成绩: ")
all_dict[num_put] = {"num": num_put, "name": name_put, "age": age_put, "python": python_put}
print(all_dict)
re_minu = input("是否返回主菜单?是的话请输入1不返回的话输入任意值")
if re_minu == "1":
return
else:
continue
def look_func():
print("-------所有学员的信息----------")
for idx in all_dict.values():
print("学号:%s|姓名:%s|年龄:%d|成绩:%d" % (idx["num"], idx["name"], idx["age"], idx["python"]))
print("****************************************************")
def avg_func():
# 定义一个变量c
c = 0
print("-------所有学员的平均分----------")
# for循环遍历字典中的所有的值
for idx in all_dict.values():
# 用变量c和python成绩相加求出总成绩
c += int(idx["python"])
# 然后用a来储存平均分
# 总成绩c整除字典中学生的人数得出平均分
a = c // len(all_dict)
print(a)
print("班级的平均分是%d" % a)
def pr_func():
# 定义一个变量c
c = 0
# for循环遍历字典中的所有的值
for idx in all_dict.values():
# 用if判断遍历的该学生的成绩是否及格
if int(idx["python"]) >= 60:
# 如果及格的话c+1
c += 1
# 最后用a来储存最后的及格率
# 及格的人数除于总人数乘以100加%%就是及格率
a = c / len(all_dict) * 100
print("班的及格率是%.f%%" % a)
# 调用读取文件中数据功能函数
fangfa()
# while循环进行反复操作
while True:
# 学生管理系统菜单
print("*******************************")
print("**********学生管理系统**********")
print("1:添加学生")
print("2:删除学生")
print("3:修改学生")
print("4:查询学生")
print("5:显示所有学生信息")
print("6:统计平均分")
print("7:统计及格率")
print("8:退出程序")
print("9:保存数据")
print("*******************************")
main_put = int(input("请按照序号进行你需要执行的操作: "))
# 根据菜单输入指定的操作功能,用if判断进行调用相应的函数
if main_put == 1:
add_func()
print("添加成功")
print(all_dict)
elif main_put == 2:
del_func()
print("删除成功")
print(all_dict)
elif main_put == 3:
revise_func()
print("修改成功")
print(all_dict)
elif main_put == 4:
query_func()
print("查询成功")
elif main_put == 5:
look_func()
print("查看所有学员的信息成功")
elif main_put == 6:
avg_func()
print("平均分计算成功")
elif main_put == 7:
pr_func()
print("及格率计算成功")
elif main_put == 8:
# 退出程序使用break
print("程序已退出!")
break
elif main_put == 9:
# 保存数据就是把新的字典中的数据写到文件中
with open("学生管理系统.txt", "w", encoding="utf-8") as fing:
fing.write(str(all_dict))
print("保存信息成功")
break
***以后鄙人会定期为大家推送实战案例,希望大家对鄙人博客有什么意见和提议可以评论出来,一块学习进步,在此谢过!***