文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python程序设计之 —— 简易学生信息管理系统

2023-09-08 12:28

关注

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

b3fbfe3ea4bd456888f880daf73703e5.png

目录

前言 

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 特点


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

 


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

  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("******\t    1.添加学生信息", " " * 18, "4.统计学生总人数\t\t    ******")    print("******\t    2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t    ******")    print("******\t    3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t    ******")    print("******\t    0.退出学生信息管理系统", " " * 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 phone    student_list = []    while True:        id = input('请输入学号: ')        if not id:            break        name = input('请输入姓名: ')        if not name:            break        sex = input('请输入性别: ')        if not sex:            break        # phone = input('请输入手机号: ')        # if not phone:        count = 0        for i in range(1, 4):            phone = input("请输入你的手机号: ")            # 利用正则表达式进行限定            tel = re.match(r"^1[3456789]\d{9}$", phone)            if tel:                print("输入成功!")                break            if tel != phone:                count += 1            if (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':            continue        else:            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 = True                    if flag:                        print(f'学号为{student_id}的学生信息已经删除')                    else:                        print(f'学生表中没有找到学号为{student_id}的学生')            else:                print('学生表已中无任何学生个人信息')                break            show()  # 重新显示所有学生信息            answer = input('是否继续删除?yes/no\n')            if answer == 'yes':                continue            else:                break    print('删除学生信息已结束,请你进行下一步操作!!!')

 

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':                continue            else:                break        else:            print('学生信息不存在!')            return    print('学生信息查询结束,请进行下一步操作!!!')

 

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('学生信息不存在!')        return    print('学生总人数统计完毕,请进行下一步操作!!!')

 

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('学生文件不存在!')        return    print('学生信息已成功显示,请你进行下一步操作!!!')

 

排序 (以总成绩分数)

# 对总学生成绩进行排序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('学生信息排序完成并成功显示,请你进行下一步操作!!!')

 


五、运行效果

31d53f439ef8442087eecd68481d94f1.png

8a3a3dda14d84d1f9f34cc8a2d1c481c.png

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

# 建立一个名为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("******\t    1.添加学生信息", " " * 18, "4.统计学生总人数\t\t    ******")    print("******\t    2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t    ******")    print("******\t    3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t    ******")    print("******\t    0.退出学生信息管理系统", " " * 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 phone    student_list = []    while True:        id = input('请输入学号: ')        if not id:            break        name = input('请输入姓名: ')        if not name:            break        sex = input('请输入性别: ')        if not sex:            break        # phone = input('请输入手机号: ')        # if not phone:        count = 0        for i in range(1, 4):            phone = input("请输入你的手机号: ")            # 利用正则表达式进行限定            tel = re.match(r"^1[3456789]\d{9}$", phone)            if tel:                print("输入成功!")                break            if tel != phone:                count += 1            if (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':            continue        else:            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':                continue            else:                break        else:            print('学生信息不存在!')            return    print('学生信息查询结束,请进行下一步操作!!!')# 删除学生信息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 = True                    if flag:                        print(f'学号为{student_id}的学生信息已经删除')                    else:                        print(f'学生表中没有找到学号为{student_id}的学生')            else:                print('学生表已中无任何学生个人信息')                break            show()  # 重新显示所有学生信息            answer = input('是否继续删除?yes/no\n')            if answer == 'yes':                continue            else:                break    print('删除学生信息已结束,请你进行下一步操作!!!')# 统计学生总人数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('学生信息不存在!')        return    print('学生总人数统计完毕,请进行下一步操作!!!')# 显示所有学生信息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('学生文件不存在!')        return    print('学生信息已成功显示,请你进行下一步操作!!!')# 对总学生成绩进行排序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 " 

 

来源地址:https://blog.csdn.net/m0_63244368/article/details/128820177

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯