python实现简易学生信息管理系统

本文实例为大家分享了python实现学生信息管理系统的具体代码,供大家参考,具体内容如下

简易学生信息管理系统主要功能有

1 录入学生信息

2 查找学生信息

3 删除学生信息

4 修改学生信息

5 排序

6 统计学生总人数

7 显示所有学生信息

0 退出系统

系统运行效果

主菜单的代码方法:

# Author: dry

# 开发时间:2019/9/11

# 开发工具:PyCharm

import re # 导入正则表达式模块

import os # 导入操作系统模块

filename = "student.txt" # 学生信息保存文件

def menu():

# 输出菜单

print('''

---------------学生信息管理系统------------

==================功能菜单================

1 录入学生信息

2 查找学生信息

3 删除学生信息

4 修改学生信息

5 排序

6 统计学生总人数

7 显示所有学生信息

0 退出系统

=======================================

说明:通过数字选择菜单

=======================================

''')

系统主方法:

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()

elif option_int == 2: # 查找学生成绩信息

search()

elif option_int == 3: # 删除学生成绩信息

delete()

elif option_int == 4: # 修改学生成绩信息

modify()

elif option_int == 5: # 排序

sort()

elif option_int == 6: # 统计学生总数

total()

elif option_int == 7: # 显示所有学生信息

show()

录入学生信息方法:

'''录入学生信息'''

def insert():

studentList = [] # 保存学生信息的列表

mark = True # 是否继续添加

while mark:

id = input("请输入学生ID(如1001):")

if not id:

break

name = input("请输入名字:")

if not name:

break

try:

english = int(input("请输入英语成绩:"))

python = int(input("请输入python成绩:"))

c = int(input("请输入C语言成绩:"))

except:

print("输入无效,不是整型数值,请重新输入信息")

continue

# 将输入的学生信息保存到字典

student = {"id": id, "name": name, "english": english, "python": python, "c": c}

studentList.append(student) # 将学生字典添加到列表中

inputList = input("是否继续添加?(y/n):")

if inputList == 'y': # 继续添加

mark = True

else:

mark = False

save(studentList) # 将学生信息保存到文件

print("学生信息录入完毕!!!")

保存学生信息方法:

'''将学生信息保存到文件'''

def save(student):

try:

student_txt = open(filename, 'a') # 以追加模式打开

except Exception as e:

student_txt = open(filename, 'w') # 文件不存在,创建文件并打开

for info in student:

student_txt.write(str(info) + "\n") # 执行存储,添加换行符

student_txt.close() # 关闭文件

查询学生信息方法:

'''查询学生信息'''

def search():

mark = True

student_query = []

while mark:

id = ""

name = ""

if os.path.exists(filename):

mode = input("按ID查询输入1:按姓名查询输入2:")

if mode == "1":

id = input("请输入学生ID:")

elif mode == "2":

name = input("请输入学生姓名:")

else:

print("您输入有误,请重新输入!")

search()

with open(filename, "r") as file:

student = file.readlines()

for list in student:

d = dict(eval(list))

if id is not "":

if d['id'] == id:

student_query.append(d)

elif name is not "":

if d['name'] == name:

student_query.append(d)

show_student(student_query)

student_query.clear()

inputMark = input("是否继续查询?(y/n):")

if inputMark == "y":

mark = True

else:

mark = False

else:

print("暂未保存数据信息...")

return

显示学生信息方法

'''将保存在列表中的学生信息显示出来'''

def show_student(studentList):

if not studentList:

print("无效的数据")

return

format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:10}"

print(format_title.format("ID", "名字", "英语成绩", "python成绩", "C语言成绩", "总成绩"))

format_data = "{:^6}{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:10}"

for info in studentList:

print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")),

str(info.get("c")),

str(info.get("english") + info.get("python") + info.get("c")).center(12)))

删除学生信息方法:

'''删除学生信息'''

def delete():

mark = True # 标记是否循环

while mark:

studentId = input("请输入要删除的学生ID:")

if studentId is not "": # 判断要删除的学生ID是否存在

if os.path.exists(filename):

with open(filename, 'r') as rfile:

student_old = rfile.readlines()

else:

student_old = []

ifdel = False # 标记是否删除

if student_old: # 如果存在学生信息

with open(filename, 'w') as wfile:

d = {} # 定义空字典

for list in student_old:

d = dict(eval(list)) # 字符串转字典

if d['id'] != studentId:

wfile.write(str(d) + "\n") # 将一条信息写入文件

else:

ifdel = True # 标记已经删除

if ifdel:

print("ID为%s的学生信息已经被删除..." % studentId)

else:

print("没有找到ID为%s的学生信息..." % studentId)

else:

print("不存在学生信息")

break

show() # 显示全部学生信息

inputMark = input("是否继续删除?(y/n):")

if inputMark == "y":

mark = True # 继续删除

else:

mark = False # 退出删除学生信息操作

修改学生信息方法:

'''修改学生信息'''

def modify():

show() # 显示全部学生信息

if os.path.exists(filename):

with open(filename, 'r') as rfile:

student_old = rfile.readlines()

else:

return

studentid = input("请输入要修改的学生ID:")

with open(filename, 'w') as wfile:

for student in student_old:

d = dict(eval(student))

if d['id'] == studentid:

print("找到了这名学生,可以修改他的信息")

while True: # 输入要修改的信息

try:

d["name"] = input("请输入姓名:")

d["english"] = int(input("请输入英语成绩:"))

d["python"] = int(input("请输入python成绩:"))

d['c'] = int(input("请输入C语言成绩:"))

except:

print("您输入有误,请重新输入!")

else:

break

student = str(d) # 将字典转为字符串

wfile.write(student + "\n") # 将修改信息写入到文件

print("修改成功")

else:

wfile.write(student) # 将未修改的信息写入文件

mark = input("是否继续修改其他学生信息?(y/n):")

if mark == "y":

modify()

学生信息排序方法:

'''排序'''

def sort():

show()

if os.path.exists(filename):

with open(filename, 'r') as file:

student_old = file.readlines()

student_new = []

for list in student_old:

d = dict(eval(list))

student_new.append(d)

else:

return

ascORdesc = input("请选择(0升序;1降序)")

if ascORdesc == "0":

ascORdescBool = False # 标记变量,为False时表示升序,为True时表示降序

elif ascORdesc == "1":

ascORdescBool = True

else:

print("您输入的信息有误,请重新输入!")

sort()

mode = input("请选择排序方式(1按英语成绩排序;2按python成绩排序;3按C语言成绩排序;0按总成绩排序):")

if mode == "1": # 按英语成绩排序

student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)

elif mode == "2": # 按python成绩排序

student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool)

elif mode == "3": # 按C语言成绩排序

student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool)

elif mode == "0": # 按总成绩排序

student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)

else:

print("您的输入有误,请重新输入!")

sort()

show_student(student_new) # 显示排序结果

统计学生总数方法:

'''统计学生总数'''

def total():

if os.path.exists(filename):

with open(filename, 'r') as rfile:

student_old = rfile.readlines()

if student_old:

print("一共有%d名学生!" % len(student_old))

else:

print("还没有录入学生信息")

else:

print("暂未保存数据信息")

显示所有学生信息方法:

'''显示所有学生信息'''

def show():

student_new = []

if os.path.exists(filename):

with open(filename, 'r') as rfile:

student_old = rfile.readlines()

for list in student_old:

student_new.append(eval(list))

if student_new:

show_student(student_new)

else:

print("暂未保存数据信息")

开始函数:

if __name__ == '__main__':

main()

完整代码如下:

# Author: dry

# 开发时间:2019/9/11

# 开发工具:PyCharm

import re # 导入正则表达式模块

import os # 导入操作系统模块

filename = "student.txt" # 学生信息保存文件

def menu():

# 输出菜单

print('''

---------------学生信息管理系统------------

==================功能菜单================

1 录入学生信息

2 查找学生信息

3 删除学生信息

4 修改学生信息

5 排序

6 统计学生总人数

7 显示所有学生信息

0 退出系统

=======================================

说明:通过数字选择菜单

=======================================

''')

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()

elif option_int == 2: # 查找学生成绩信息

search()

elif option_int == 3: # 删除学生成绩信息

delete()

elif option_int == 4: # 修改学生成绩信息

modify()

elif option_int == 5: # 排序

sort()

elif option_int == 6: # 统计学生总数

total()

elif option_int == 7: # 显示所有学生信息

show()

'''录入学生信息'''

def insert():

studentList = [] # 保存学生信息的列表

mark = True # 是否继续添加

while mark:

id = input("请输入学生ID(如1001):")

if not id:

break

name = input("请输入名字:")

if not name:

break

try:

english = int(input("请输入英语成绩:"))

python = int(input("请输入python成绩:"))

c = int(input("请输入C语言成绩:"))

except:

print("输入无效,不是整形数值,请重新输入信息")

continue

# 将输入的学生信息保存到字典

student = {"id": id, "name": name, "english": english, "python": python, "c": c}

studentList.append(student) # 将学生字典添加到列表中

inputList = input("是否继续添加?(y/n):")

if inputList == 'y': # 继续添加

mark = True

else:

mark = False

save(studentList) # 将学生信息保存到文件

print("学生信息录入完毕!!!")

'''将学生信息保存到文件'''

def save(student):

try:

student_txt = open(filename, 'a') # 以追加模式打开

except Exception as e:

student_txt = open(filename, 'w') # 文件不存在,创建文件并打开

for info in student:

student_txt.write(str(info) + "\n") # 执行存储,添加换行符

student_txt.close() # 关闭文件

'''查询学生信息'''

def search():

mark = True

student_query = []

while mark:

id = ""

name = ""

if os.path.exists(filename):

mode = input("按ID查询输入1:按姓名查询输入2:")

if mode == "1":

id = input("请输入学生ID:")

elif mode == "2":

name = input("请输入学生姓名:")

else:

print("您输入有误,请重新输入!")

search()

with open(filename, "r") as file:

student = file.readlines()

for list in student:

d = dict(eval(list))

if id is not "":

if d['id'] == id:

student_query.append(d)

elif name is not "":

if d['name'] == name:

student_query.append(d)

show_student(student_query)

student_query.clear()

inputMark = input("是否继续查询?(y/n):")

if inputMark == "y":

mark = True

else:

mark = False

else:

print("暂未保存数据信息...")

return

'''将保存在列表中的学生信息显示出来'''

def show_student(studentList):

if not studentList:

print("无效的数据")

return

format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:10}"

print(format_title.format("ID", "名字", "英语成绩", "python成绩", "C语言成绩", "总成绩"))

format_data = "{:^6}{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:10}"

for info in studentList:

print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")),

str(info.get("c")),

str(info.get("english") + info.get("python") + info.get("c")).center(12)))

'''删除学生信息'''

def delete():

mark = True # 标记是否循环

while mark:

studentId = input("请输入要删除的学生ID:")

if studentId is not "": # 判断要删除的学生ID是否存在

if os.path.exists(filename):

with open(filename, 'r') as rfile:

student_old = rfile.readlines()

else:

student_old = []

ifdel = False # 标记是否删除

if student_old: # 如果存在学生信息

with open(filename, 'w') as wfile:

d = {} # 定义空字典

for list in student_old:

d = dict(eval(list)) # 字符串转字典

if d['id'] != studentId:

wfile.write(str(d) + "\n") # 将一条信息写入文件

else:

ifdel = True # 标记已经删除

if ifdel:

print("ID为%s的学生信息已经被删除..." % studentId)

else:

print("没有找到ID为%s的学生信息..." % studentId)

else:

print("不存在学生信息")

break

show() # 显示全部学生信息

inputMark = input("是否继续删除?(y/n):")

if inputMark == "y":

mark = True # 继续删除

else:

mark = False # 退出删除学生信息操作

'''修改学生信息'''

def modify():

show() # 显示全部学生信息

if os.path.exists(filename):

with open(filename, 'r') as rfile:

student_old = rfile.readlines()

else:

return

studentid = input("请输入要修改的学生ID:")

with open(filename, 'w') as wfile:

for student in student_old:

d = dict(eval(student))

if d['id'] == studentid:

print("找到了这名学生,可以修改他的信息")

while True: # 输入要修改的信息

try:

d["name"] = input("请输入姓名:")

d["english"] = int(input("请输入英语成绩:"))

d["python"] = int(input("请输入python成绩:"))

d['c'] = int(input("请输入C语言成绩:"))

except:

print("您输入有误,请重新输入!")

else:

break

student = str(d) # 将字典转为字符串

wfile.write(student + "\n") # 将修改信息写入到文件

print("修改成功")

else:

wfile.write(student) # 将未修改的信息写入文件

mark = input("是否继续修改其他学生信息?(y/n):")

if mark == "y":

modify()

'''排序'''

def sort():

show()

if os.path.exists(filename):

with open(filename, 'r') as file:

student_old = file.readlines()

student_new = []

for list in student_old:

d = dict(eval(list))

student_new.append(d)

else:

return

ascORdesc = input("请选择(0升序;1降序)")

if ascORdesc == "0":

ascORdescBool = False # 标记变量,为False时表示升序,为True时表示降序

elif ascORdesc == "1":

ascORdescBool = True

else:

print("您输入的信息有误,请重新输入!")

sort()

mode = input("请选择排序方式(1按英语成绩排序;2按python成绩排序;3按C语言成绩排序;0按总成绩排序):")

if mode == "1": # 按英语成绩排序

student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)

elif mode == "2": # 按python成绩排序

student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool)

elif mode == "3": # 按C语言成绩排序

student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool)

elif mode == "0": # 按总成绩排序

student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)

else:

print("您的输入有误,请重新输入!")

sort()

show_student(student_new) # 显示排序结果

'''统计学生总数'''

def total():

if os.path.exists(filename):

with open(filename, 'r') as rfile:

student_old = rfile.readlines()

if student_old:

print("一共有%d名学生!" % len(student_old))

else:

print("还没有录入学生信息")

else:

print("暂未保存数据信息")

'''显示所有学生信息'''

def show():

student_new = []

if os.path.exists(filename):

with open(filename, 'r') as rfile:

student_old = rfile.readlines()

for list in student_old:

student_new.append(eval(list))

if student_new:

show_student(student_new)

else:

print("暂未保存数据信息")

if __name__ == '__main__':

main()

关于管理系统的更多内容请点击《管理系统专题》进行学习

以上是 python实现简易学生信息管理系统 的全部内容, 来源链接: utcz.com/z/328344.html

回到顶部