前言

基于Python 课程设计-学生管理系统(附源码+可执行程序)

非常完整的一个项目,可以作为课程设计去学习。

本系统的完整源码在文章结尾处,大家自行获取即可。

开发环境要求

本系统的软件开发及运行环境具体如下。
操作系统:Windows 7、Windows 10。
Python版本:Python 3.7.0。
开发工具:Python IDLE。
Python内置模块:os、re。

运行方法

在项目文件studentsystem.py上单击鼠标右键,在弹出快捷菜单中选择“Edit with IDLE\Edit with IDLE 3.7(64-bit)”菜单项,如图1所示。

图1 选择IDLE打开项目文件
在打开的Python Shell窗口中,按下F5键运行程序即可。运行效果如图2所示。

图2 项目主界面

# _*_ coding:utf-8 _*_# 文件名称:studentsystem.py# 开发工具:PyCharmimport re# 导入正则表达式模块import os# 导入操作系统模块filename = "students.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 = Falseelif 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()'''1 录入学生信息'''def insert():stdentList = []# 保存学生信息的列表mark = True# 是否继续添加while mark:id = input("请输入ID(如 1001):")if not id:# ID为空,跳出循环breakname = input("请输入名字:")if not name:# 名字为空,跳出循环breaktry:english = int(input("请输入英语成绩:"))python = int(input("请输入Python成绩:"))c = int(input("请输入C语言成绩:"))except:print("输入无效,不是整型数值....重新录入信息")continuestdent = {"id": id, "name": name, "english": english, "python": python, "c": c}# 将输入的学生信息保存到字典stdentList.append(stdent)# 将学生字典添加到列表中inputMark = input("是否继续添加?(y/n):")if inputMark == "y":# 继续添加mark = Trueelse:# 不继续添加mark = Falsesave(stdentList)# 将学生信息保存到文件print("学生信息录入完毕!!!")# 将学生信息保存到文件def save(student):try:students_txt = open(filename, "a")# 以追加模式打开except Exception as e:students_txt = open(filename, "w")# 文件不存在,创建文件并打开for info in student:students_txt.write(str(info) + "\n")# 按行存储,添加换行符students_txt.close()# 关闭文件'''2 查找学生成绩信息'''def search():mark = Truestudent_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 "":# 判断是否按ID查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 = Trueelse:mark = Falseelse:print("暂未保存数据信息...")return'''3 删除学生成绩信息'''def delete():mark = True# 标记是否循环while mark:studentId = input("请输入要删除的学生ID:")if studentId is not "":# 判断要删除的学生是否存在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# 退出删除学生信息功能'''4 修改学生成绩信息'''def modify():show()# 显示全部学生信息if os.path.exists(filename):# 判断文件是否存在with open(filename, 'r') as rfile:# 打开文件student_old = rfile.readlines()# 读取全部内容else:returnstudentid = 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()# 重新执行修改操作'''5 排序'''

源码获取方法:

需要完整源码的朋友,希望你能点赞+收藏+评论,然后私信我即可~