大家好,我是 Enovo飞鱼,今天分享一个 Python程序设计之 —— 简易学生信息管理系统 ,小白或者正在学习Python的小伙伴推荐阅读,加油。

目录

前言

Python简介

Python 特点

一、项目来源及背景

二、功能设计

三、步骤分析

四、需求实现

五、具体代码

功能界面部分:

主要部分代码:

4.1 添加学生信息

4.2 删除学生信息

4.3 查询学生信息

4.4 统计学生总人数

4.5 显示所有学生信息

排序 (以总成绩分数)

五、运行效果

六、完整代码

获取源码?私信?关注?点赞?收藏?


Java程序设计之(一)MySQL的交互-学生信息成绩管理系统:

http://t.csdn.cn/JKoQIhttp://t.csdn.cn/JKoQI


前言

Python简介

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

  • Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

  • Python 是交互式语言:这意味着,您可以在一个 Python 提示符>>>后直接执行代码。

  • Python 是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python 特点

  • 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

  • 2.易于阅读:Python代码定义的更清晰。

  • 3.易于维护:Python的成功在于它的源代码是相当容易维护的。

  • 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。

  • 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。

  • 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

  • 7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

  • 8.数据库:Python提供所有主要的商业数据库的接口。

  • 9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。

  • 10.可嵌入:你可以将Python嵌入到C/C++程序,让你的程序的用户获得”脚本化”的能力。


一、项目来源及背景

学生信息管理系统是学生在每学年记录学生升学,转学,退学等的主要应用,具有较强的实用性,贴近实际,便于完成系统的分析与设计,适用于多用户。


二、功能设计

实现一个学生信息的管理系统:主要功能有:

  1. 添加学生信息

  2. 删除学生信息

  3. 查询学生信息

  4. 统计学生总人数

  5. 显示所有学生信息

  6. 排序(以总成绩分数)

  7. 退出学生信息管理系统


三、步骤分析

  1. 显示功能界面

  2. 用户输入功能序号

  3. 对不同序号的功能实现具体函数

3.1 定义函数

3.2 调用函数


四、需求实现

  1. 显示功能界面menu()

  2. 用户输入程序指令choice = int(input(‘请输入您的程序指令:’))

  3. 按照用户输入的功能序号,执行不同的功能(函数)

  4. 添加学生信息 insert()

  5. 删除学生信息 delete()

  6. 查询学生信息 search()

  7. 统计学生总人数total()

  8. 显示所以学生信息 show()

  9. 排序(以总成绩分数)sort()

  10. 退出学生信息管理系统 if choice == 0:


五、具体代码

系统功能进行循环使用,直到用户输入0,退出系统。

功能界面部分:

def menu():print('==============================学生信息管理系统==============================')print('︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽功能菜单︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽')print("*" * 74)print("******", " " * 60, "******")print("******\t1.添加学生信息", " " * 18, "4.统计学生总人数\t\t******")print("******\t2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t******")print("******\t3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t******")print("******\t0.退出学生信息管理系统", " " * 18, "\t\t\t\t\t******")print("******", " " * 60, "******")print("*" * 74)print('︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾')def save(lst):stu_txt = open(fileName, 'a', encoding='utf-8')for item in lst:stu_txt.write(str(item) + '\n')stu_txt.close()

主要部分代码:

# 定义函数main()def main():while True:menu()choice = int(input('请输入您的程序指令:'))if choice in [0, 1, 2, 3, 4, 5, 6]:if choice == 0:print("您确定要退出吗?yes/no")answer = input()if answer == 'yes':print('感谢您的使用!!!')break# 终止else:continue# 中止elif choice == 1:insert()elif choice == 2:delete()elif choice == 3:search()elif choice == 4:total()elif choice == 5:show()elif choice == 6:sort()else:print('输入的指令不在范围内,请重新输入!!!')

那么根据上面的代码,需要实现具体的功能函数,主要功能代码部分如下:


4.1 添加学生信息

# 录入学生信息def insert():global phonestudent_list = []while True:id = input('请输入学号: ')if not id:breakname = input('请输入姓名: ')if not name:breaksex = input('请输入性别: ')if not sex:break# phone = input('请输入手机号: ')# if not phone:count = 0for i in range(1, 4):phone = input("请输入你的手机号: ")# 利用正则表达式进行限定tel = re.match(r"^1[3456789]\d{9}$", phone)if tel:print("输入成功!")breakif tel != phone:count += 1if (count == 3):print("录入失败,请30秒后重试!")if (count != 3):print("录入错误,请核对你的手机号!")try:# 智育分满分70分,德育分满分20分,体育分满分10分zyf = int(input('请输入你的智育分:'))dyf = int(input('请输入你的德育分:'))tyf = int(input('请输入你的体育分:'))except:print('请您输入数字成绩!')continue# 将录入的学生信息保存到字典中student = {'id': id, 'name': name, 'sex': sex, 'phone': phone, 'zyf': zyf, 'dyf': dyf, 'tyf': tyf}# 将学生信息添加到列表中# 可删!!!!!student_list.append(student)answer = input('是否继续添加?yes/no\n')if answer == 'yes':continueelse:break# 保存学生信息save(student_list)# 封装print('学生信息录入完毕!!!')

4.2 删除学生信息

# 删除学生信息def delete():while True:student_id = input('请输入要删除学生的学号:')if student_id != '':if os.path.exists(fileName):with open(fileName, 'r', encoding='utf-8') as file:student_old = file.readlines()else:student_old = []flag = False# 标记是否删除if student_old:with open(fileName, 'w', encoding='utf-8') as wfile:d = {}for item in student_old:d = dict(eval(item))# 将字符串转换为字典if d['id'] != student_id:wfile.write(str(d) + '\n')else:flag = Trueif flag:print(f'学号为{student_id}的学生信息已经删除')else:print(f'学生表中没有找到学号为{student_id}的学生')else:print('学生表已中无任何学生个人信息')breakshow()# 重新显示所有学生信息answer = input('是否继续删除?yes/no\n')if answer == 'yes':continueelse:breakprint('删除学生信息已结束,请你进行下一步操作!!!')

4.3 查询学生信息

# 查询学生信息def search():while True:stu_query = []id = ''# 判断文件是否存在if os.path.exists(fileName):# if的使用if id == '':id = input('请输入要查找的学生学号:')else:print('您的输入有误,请重新输入!')continue# 如果文件存在,并且用户输入了正确的查询标号,则打开文件with open(fileName, 'r', encoding='utf-8') as rfile:students = rfile.readlines()# 转换为字典类型for item in students:d = dict(eval(item))if id != '':if id == d['id']:stu_query.append(d)# 追加# 显示查询结果show_student(stu_query)# 是否继续查询其他学生信息answer = input('还要查询其他学生吗?yes/no\n')if answer == 'yes':continueelse:breakelse:print('学生信息不存在!')returnprint('学生信息查询结束,请进行下一步操作!!!')

4.4 统计学生总人数

# 统计学生总人数def total():# 判断文件是否存在,如果存在则打开文件,读取信息if os.path.exists(fileName):with open(fileName, 'r', encoding='utf-8') as rfile:students = rfile.readlines()# 判断读取到的学生信息是否为空if students:print('一共有{}名学生'.format(len(students)))else:print('学生系统中还没有录入学生信息!')else:print('学生信息不存在!')returnprint('学生总人数统计完毕,请进行下一步操作!!!')

4.5 显示所有学生信息

# 显示所有学生信息def show():student_list = []# 判断文件是否存在,如果存在则打开文件,读取信息if os.path.exists(fileName):with open(fileName, 'r', encoding='utf-8') as rfile:students = rfile.readlines()# 判断读取到的学生信息是否为空if students:for item in students:student_list.append(eval(item))# 展示学生信息show_student(student_list)else:print('学生文件中还没有录入学生信息!')else:print('学生文件不存在!')returnprint('学生信息已成功显示,请你进行下一步操作!!!')

排序 (以总成绩分数)

# 对总学生成绩进行排序def sort():# 判断文件是否存在,如果存在则打开文件,读取信息if os.path.exists(fileName):with open(fileName, 'r', encoding='utf-8') as rfile:students_list = rfile.readlines()students_new = []# 判断读取到的学生信息是否为空if students_list:# 将所有的item加入到students_new中for item in students_list:d = dict(eval(item))students_new.append(d)# 利用匿名函数与sort方法进行排序# True为降序,False升序students_new.sort(key=lambda x: int(x['zyf']) + int(x['dyf']) + int(x['tyf']),reverse=True)# 将排序后的成绩进行输出show_student(students_new)print('学生信息排序完成并成功显示,请你进行下一步操作!!!')

五、运行效果

如上图所示可以看到我们的运行效果,及示例,并且我们输入的信息会存入一个文本文件,那怎么实现的呢?请看下方代码

# 建立一个名为student.text的文本用于保存文件fileName = 'student.txt'

六、完整代码

# 导入模块import osimport re# 建立一个名为student.text的文本用于保存文件fileName = 'student.txt'# 定义函数main()def main():while True:menu()choice = int(input('请输入您的程序指令:'))if choice in [0, 1, 2, 3, 4, 5, 6]:if choice == 0:print("您确定要退出吗?yes/no")answer = input()if answer == 'yes':print('感谢您的使用!!!')break# 终止else:continue# 中止elif choice == 1:insert()elif choice == 2:delete()elif choice == 3:search()elif choice == 4:total()elif choice == 5:show()elif choice == 6:sort()else:print('输入的指令不在范围内,请重新输入!!!')def menu():print('==============================学生信息管理系统==============================')print('︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽功能菜单︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽')print("*" * 74)print("******", " " * 60, "******")print("******\t1.添加学生信息", " " * 18, "4.统计学生总人数\t\t******")print("******\t2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t******")print("******\t3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t******")print("******\t0.退出学生信息管理系统", " " * 18, "\t\t\t\t\t******")print("******", " " * 60, "******")print("*" * 74)print('︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾')def save(lst):stu_txt = open(fileName, 'a', encoding='utf-8')for item in lst:stu_txt.write(str(item) + '\n')stu_txt.close()# 录入学生信息def insert():global phonestudent_list = []while True:id = input('请输入学号: ')if not id:breakname = input('请输入姓名: ')if not name:breaksex = input('请输入性别: ')if not sex:break# phone = input('请输入手机号: ')# if not phone:count = 0for i in range(1, 4):phone = input("请输入你的手机号: ")# 利用正则表达式进行限定tel = re.match(r"^1[3456789]\d{9}$", phone)if tel:print("输入成功!")breakif tel != phone:count += 1if (count == 3):print("录入失败,请30秒后重试!")if (count != 3):print("录入错误,请核对你的手机号!")try:# 智育分满分70分,德育分满分20分,体育分满分10分zyf = int(input('请输入你的智育分:'))dyf = int(input('请输入你的德育分:'))tyf = int(input('请输入你的体育分:'))except:print('请您输入数字成绩!')continue# 将录入的学生信息保存到字典中student = {'id': id, 'name': name, 'sex': sex, 'phone': phone, 'zyf': zyf, 'dyf': dyf, 'tyf': tyf}# 将学生信息添加到列表中# 可删!!!!!student_list.append(student)answer = input('是否继续添加?yes/no\n')if answer == 'yes':continueelse:break# 保存学生信息save(student_list)# 封装print('学生信息录入完毕!!!')def show_student(lst):# 传过来空列表if len(lst) == 0:print('没有查找到该生信息!')return# 定义标题显示格式format_title = '{:^5}\t{:^23}{:^5}\t{:^11}\t{:^12}\t{:^10}\t{:^10}\t{:^6}\t{:^6}\t'print(format_title.format('学号', '姓名', '性别', '手机号', '智育分', '德育分', '体育分', '总成绩', '分数等级'))# 定义内容的显示格式format_data = '{:^6}\t{:^6}\t{:^6}\t{:^31}{:^3}\t{:^10}\t{:^9}\t{:^12}\t{:^12}\t'for item in lst:sum = int(item['zyf']) + int(item['dyf']) + int(item['tyf'])# grade等级的使用grade = ''if sum >= 85:grade = 'A'if 75 <= sum < 85:grade = 'B'if 65 <= sum < 75:grade = 'C'if 60 <= sum < 65:grade = 'D'if sum < 60:grade = 'error'# sum,grade的输出格式不同# format_data.format(sum,grade))print(format_data.format(item['id'], item['name'], item['sex'], item['phone'], item['zyf'], item['dyf'], item['tyf'], sum, grade))print('全部学生信息显示完毕!!!')# 查询学生信息def search():while True:stu_query = []id = ''# 判断文件是否存在if os.path.exists(fileName):# if的使用if id == '':id = input('请输入要查找的学生学号:')else:print('您的输入有误,请重新输入!')continue# 如果文件存在,并且用户输入了正确的查询标号,则打开文件with open(fileName, 'r', encoding='utf-8') as rfile:students = rfile.readlines()# 转换为字典类型for item in students:d = dict(eval(item))if id != '':if id == d['id']:stu_query.append(d)# 追加# 显示查询结果show_student(stu_query)# 是否继续查询其他学生信息answer = input('还要查询其他学生吗?yes/no\n')if answer == 'yes':continueelse:breakelse:print('学生信息不存在!')returnprint('学生信息查询结束,请进行下一步操作!!!')# 删除学生信息def delete():while True:student_id = input('请输入要删除学生的学号:')if student_id != '':if os.path.exists(fileName):with open(fileName, 'r', encoding='utf-8') as file:student_old = file.readlines()else:student_old = []flag = False# 标记是否删除if student_old:with open(fileName, 'w', encoding='utf-8') as wfile:d = {}for item in student_old:d = dict(eval(item))# 将字符串转换为字典if d['id'] != student_id:wfile.write(str(d) + '\n')else:flag = Trueif flag:print(f'学号为{student_id}的学生信息已经删除')else:print(f'学生表中没有找到学号为{student_id}的学生')else:print('学生表已中无任何学生个人信息')breakshow()# 重新显示所有学生信息answer = input('是否继续删除?yes/no\n')if answer == 'yes':continueelse:breakprint('删除学生信息已结束,请你进行下一步操作!!!')# 统计学生总人数def total():# 判断文件是否存在,如果存在则打开文件,读取信息if os.path.exists(fileName):with open(fileName, 'r', encoding='utf-8') as rfile:students = rfile.readlines()# 判断读取到的学生信息是否为空if students:print('一共有{}名学生'.format(len(students)))else:print('学生系统中还没有录入学生信息!')else:print('学生信息不存在!')returnprint('学生总人数统计完毕,请进行下一步操作!!!')# 显示所有学生信息def show():student_list = []# 判断文件是否存在,如果存在则打开文件,读取信息if os.path.exists(fileName):with open(fileName, 'r', encoding='utf-8') as rfile:students = rfile.readlines()# 判断读取到的学生信息是否为空if students:for item in students:student_list.append(eval(item))# 展示学生信息show_student(student_list)else:print('学生文件中还没有录入学生信息!')else:print('学生文件不存在!')returnprint('学生信息已成功显示,请你进行下一步操作!!!')# 对总学生成绩进行排序def sort():# 判断文件是否存在,如果存在则打开文件,读取信息if os.path.exists(fileName):with open(fileName, 'r', encoding='utf-8') as rfile:students_list = rfile.readlines()students_new = []# 判断读取到的学生信息是否为空if students_list:# 将所有的item加入到students_new中for item in students_list:d = dict(eval(item))students_new.append(d)# 利用匿名函数与sort方法进行排序# True为降序,False升序students_new.sort(key=lambda x: int(x['zyf']) + int(x['dyf']) + int(x['tyf']),reverse=True)# 将排序后的成绩进行输出show_student(students_new)print('学生信息排序完成并成功显示,请你进行下一步操作!!!')if __name__ == '__main__':main()

上述内容就是我们,Python学生信息管理系统 的全部内容了,希望可以得到大家的支持!

以上就是课程实践作业—— 学生信息管理系统 的全部程序设计分析及相关代码,供大家学习使用,希望可以帮助到大家!如果各位有疑问的话,欢迎私信,发现错误,也希望可以指出,共同改进学习,加油!


获取源码?私信?关注?点赞?收藏?

+✏️+⭐️+‍

有需要源码的小伙伴可以关注下方微信公众号 ” Enovo开发工厂 “,回复 关键词 ” python-m1 “