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

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

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

目录


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

http://t.csdn.cn/JKoQIPython程序设计之 —— 简易学生信息管理系统http://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("******\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('学生信息排序完成并成功显示,请你进行下一步操作!!!')

五、运行效果

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

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

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

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

fileName = 'student.txt'

六、完整代码

# 导入模块
import os
import 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 " 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年3月2日 下午10:51
下一篇 2023年3月2日 下午10:52

相关推荐