看在源代码免费的份上,点个关注吧(づ ̄ 3 ̄)づ
关注是我更新的动力\( ̄︶ ̄*\))
作者会分享更多涉及到各种编程语言的项目!(^∀^●)ノシ
目录
一.系统概述
这个学生信息管理系统采用文本文件存储数据,实现了以下核心功能:
-
学生信息录入(学号、姓名、英语/Python/C语言成绩)
-
信息查询(按学号或姓名)
-
信息删除与修改
-
成绩排序(支持多科目升降序)
-
学生人数统计
-
信息展示(格式化输出)
二.系统架构与核心模块
1. 主控制模块
def main():
ctrl = True # 标记是否退出系统
while (ctrl):
menu() # 显示菜单
option = input("请选择:") # 选择菜单项
option_str = re.sub("\D", "", option) # 提取数字
if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']:
option_int = int(option_str)
if option_int == 0: # 退出系统
print('您已退出学生成绩管理系统!')
ctrl = False
elif option_int == 1: # 录入学生成绩信息
insert()
2. 菜单界面
def menu():
print('''
╔———————学生信息管理系统————————╗
│ │
│ =============== 功能菜单 =============== │
│ │
│ 1 录入学生信息 │
│ 2 查找学生信息 │
│ 3 删除学生信息 │
│ 4 修改学生信息 │
│ 5 排序 │
│ 6 统计学生总人数 │
│ 7 显示所有学生信息 │
│ 0 退出系统 │
│ ========================================== │
│ 说明:通过数字或↑↓方向键选择菜单 │
╚———————————————————————╝
''')
三.核心功能实现详解
1. 数据录入与存储
def insert():
stdentList = [] # 保存学生信息的列表
mark = True # 是否继续添加
while mark:
id = input("请输入ID(如 1001):")
# 输入验证...
stdent = {
"id": id,
"name": name,
"english": english,
"python": python,
"c": c
}
stdentList.append(stdent)
# 询问是否继续添加...
save(stdentList) # 将学生信息保存到文件
def save(student):
try:
students_txt = open(filename, "a") # 以追加模式打开
except:
students_txt = open(filename, "w") # 文件不存在则创建
for info in student:
students_txt.write(str(info) + "\n") # 按行存储
2. 信息查询功能
def search():
student_query = [] # 保存查询结果
mode = input("按ID查输入1;按姓名查输入2:")
if mode == "1":
id = input("请输入学生ID:")
# 其他模式处理...
with open(filename, 'r') as file:
student = file.readlines()
for list in student:
d = dict(eval(list)) # 字符串转字典
if id != "" and d['id'] == id:
student_query.append(d)
show_student(student_query) # 显示查询结果
3. 数据删除实现
def delete():
studentId = input("请输入要删除的学生ID:")
with open(filename, 'r') as rfile:
student_old = rfile.readlines()
with open(filename, 'w') as wfile:
for list in student_old:
d = dict(eval(list))
if d['id'] != studentId: # 只保留不需要删除的记录
wfile.write(str(d) + "\n")
4. 多条件排序算法
def sort():
# 读取数据...
ascORdesc = input("请选择(0升序;1降序):")
mode = input("请选择排序方式(1英语;2Python;3C语言;0总成绩):")
if mode == "1": # 按英语成绩排序
student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)
elif mode == "0": # 按总成绩排序
student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)
# 其他科目处理...
show_student(student_new) # 显示排序结果
5. 数据展示格式
def show_student(studentList):
format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"
print(format_title.format("ID", "名字", "英语成绩", "Python成绩", "C语言成绩", "总成绩"))
format_data = "{:^6}{:^12}\t{:^12}\t{:^12}\t{:^12}\t{:^12}"
for info in studentList:
total_score = info["english"] + info["python"] + info["c"]
print(format_data.format(
info.get("id"),
info.get("name"),
str(info.get("english")),
str(info.get("python")),
str(info.get("c")),
str(total_score)
))