Python项目实战集锦(一): 学生信息管理系统

在科技日益发展的今天,学生是国家关注培养的重点,衡量一个学生在校的状态更是为学生的全面发展提供了有效保障。随着学生数量的增多、信息更新的加快,手工记录的学生信息已经跟不上时代的发展,而且不能及时将信息反馈给家长、老师和学生,对学生最近的状态不能及时的定位,致使不能对学生出现的反常现象做出及时、有效的干预。而智能化、信息化的学生信息管理系统可以方便快捷地统计学生的信息,记录学生的信息,对学生信息的变化及时更新,同时也可以使家长实时了解学生成绩的动态,更好地管理学生,更准确地指引学生方向。本文使用 Python 语言开发了一个学生信息管理系统,该系统可以帮助教师快速录入学生的信息,并且对学生的信息进行基本的增、删、改、查操作;还可以根据排序功能,宏观地看到学生成绩从高到低的排列,随时掌握学生近期的学习状态。实时地将学生的信息保存到磁盘文件中,方便查看。

一、需求分析

为了顺应互联网时代用户的获取数据需求,学生信息管理系统应该具备以下功能:

  1. 添加学生及成绩信息;
  2. 将学生信息保存到文件中;
  3. 修改和删除学生信息;
  4. 查询学生信息;
  5. 根据学生成绩进行排序;
  6. 统计学生的总分。

二、系统设计

2.1 系统功能结构

学生信息管理系统分为7大功能模块,主要包括录入学生信息模块、查找学生信息模块、删除学生信息模块、修改学生信息模块、学生成绩排名模块、统计学生总人数模块及显示全部学生信息模块。学生信息管理系统的功能结构如下图所示:
在这里插入图片描述

2.2 系统业务流程

在开发学生信息管理系统前,需要先了解系统的业务流程。根据学生信息管理系统的需求分析及功能结构,设计出下图所示的系统业务流程。
在这里插入图片描述

2.3 系统预览

学生信息管理系统是一款在 Pycharm 运行的程序。在程序开始时,首先进入的是系统主界面,在该界面中,显示可选择的功能菜单,效果如下图所示:

在功能菜单中,输入数字 "1" 选择 "1 录入学生信息" 菜单项,将进入输入学生信息界面,在该界面中,可以批量输入学生信息,效果如下图所示:
在这里插入图片描述
在功能菜单中,输入 "2",将进入查找学生信息界面,在该界面中,可以根据学生 ID 或者学生姓名查询学生信息,效果如下图所示:

在功能菜单中,输入 "4",将进入修改学生信息界面,在该界面中,可以根据学生 ID 修改学生信息,效果如下图所示:
在这里插入图片描述
在功能菜单中,输入 "5",将进入对学生成绩信息进行排序的界面,在该界面中,可以根据学生成绩对学生成绩信息进行升序或降序排列,效果如下图所示:
在这里插入图片描述

三、系统开发必备

3.1 系统开发环境

本系统的软件开发及运行环境具体如下:

  1. 操作系统:Windows 10、Windows 11
  2. Python 版本:Python 3.10
  3. 开发工具:Pycharm
  4. Python 内置模块:os.path、json

3.2 文件夹组织结构

学生信息管理系统的文件夹结构比较简单,只包括一个 Python 文件。在运行程序时,会在项目的根目录下自动创建一个名称为 student_system.txt 文件,用于保存学生信息,其详细结构如下图所示:
在这里插入图片描述

四、主函数设计

4.1 功能概述

学习信息管理系统的主函数 main(),主要用于实现系统的主界面。在主函数 main() 中,调用 menu() 函数生成功能选择菜单,并且应用字典结合 if 语句控制各个子函数的调用,从而实现对学生信息的录入、查询、显示、修改、排序和统计等功能。系统主界面的运行效果如下图所示:

4.2 主函数的业务流程

在设计学生信息管理系统的主函数时,先要梳理出它的业务流程和实现技术。根据学生信息管理系统主函数要实现的功能,设计出如下图所示的业务流程:
在这里插入图片描述

4.3 实现主函数

运行学生信息管理系统,首先将进入主功能菜单的选择界面,在这里列出了程序中的所有功能,用户可以根据需要输入要执行功能对应的数字编号,进入对应的子功能中去。其次在 menu() 函数中主要使用 print() 函数在控制台输出文字和特殊字符组成的功能菜单。当用户输入功能编号或者选择相应的功能后,程序会根据用户选择的功能编号调用不同的函数,具体数字表示的功能如下表所示:

# 编号 功能
# 0    退出系统
# 1    录入学生信息,调用add()函数
# 2    查找学生信息,调用query()函数
# 3	   删除学生信息,调用delete()函数
# 4	   修改学生信息,调用modify()函数
# 5	   对学生成绩排序,调用sort()函数
# 6	   统计学生总人数,调用count()函数
# 7    显示所有学生的信息,调用show_all()函数

主函数 main() 的实现代码如下:

def main():
    """主函数"""
    flag = True  # 标记是否退出学生信息管理系统
    # 使用字典映射,用户输入内容所对应的功能,方便后续维护添加新的功能
    function_dict = {
        '0': False,
        '1': add,
        '2': query,
        '3': delete,
        '4': modify,
        '5': sort,
        '6': count,
        '7': show_all,
    }
    while flag:
        menu()
        choice_num = input('请选择: ')
        if choice_num in function_dict:
            value = function_dict[choice_num]
            if callable(value):
                value()
            else:
                flag = value

4.4 显示主菜单

在主函数 main() 中,调用 menu() 函数,用于显示功能菜单。它的具体代码如下:

def menu():
    """输出主菜单"""
    print('''
    X――――――――学生信息管理系统――――――――[
    │                        │
    │ ================ 功能菜单 ===============  │
    │                        │
    │ 1 录入学生信息                │
    │ 2 查找学生信息                │
    │ 3 删除学生信息                │
    │ 4 修改学生信息                │
    │ 5 排序                    │
    │ 6 统计学生总人数               │
    │ 7 显示所有学生信息              │
    │ 0 退出系统                  │
    │ ==========================================   │
    │ 说明:通过数字或↑↓方向键选择菜单        │
    ^――――――――――――――――――――――――a
    ''')

五、学生信息维护模块设计

5.1 学生信息维护模块概述

在学生信息管理系统中学生信息维护模块用于维护学生信息。主要包括录入学生信息、修改学生信息和删除学生信息,这些学生信息会保存到磁盘文件。其中,当用户在功能选择界面中输入数字 "1",即可进入录入学生信息功能。在这里可以实现批量录入学生信息,并保存到磁盘文件中,运行效果如下图所示:
在这里插入图片描述
当用户在功能选择界面中输入数字 "3",将进入删除学生信息功能界面。在这里可以实现根据学生 ID 从磁盘文件中删除指定的学生信息,运行效果如下图所示:
在这里插入图片描述
当用户在功能选择界面中输入数字 "4",将进入修改学生信息功能界面。在这里可以实现根据学生 ID 修改指定的学生信息,运行效果如下图所示:
在这里插入图片描述

5.2 实现录入学生信息功能

① 功能概述。 录入学生信息功能主要就是获取用户在控制台上输入的学生信息,并且把它们保存到磁盘文件中,从而达到永久保存的目的。例如,在功能菜单上输入功能编号1,并且按下 <Enter> 键,系统将分别提示输入学生编号、学生名字、英语成绩、Python成绩和C语言成绩的信息,输入正确的信息后,系统会提示是否继续添加,如下图所示:
在这里插入图片描述
输入 "y" 系统将再次提示用户输入学生信息,输入 "n" 系统将录入的学生信息保存到文件中。

② 业务流程。 在实现录入学生信息功能时,先要梳理出它的业务流程和实现技术。录入学生信息的业务流程和实现技术如下图所示:
在这里插入图片描述
③ 具体实现。

  1. 编写一个向文件中写入指定内容的函数,将其命名为 write(),该函数有一个列表类型的参数,用于指定要写入的内容,一个缺省参数代表操作文件的模式,默认为 a。write() 函数的具体代码如下:

    def write(stu_list, mode='a'):
        """将信息写入文本文件中"""
        with open(file_name, mode, encoding='utf8') as file:
            for stu in stu_list:
                file.write(json.dumps(stu, ensure_ascii=False) + '\n')
    
  2. 编写主函数中调用的录入学生信息的函数 add()。在该函数中,先定义一个保存学生信息的空列表,然后设置一个 while 循环,在该循环中通过 input() 函数要求用户输入学生信息(包括学生ID、名字、英语成绩、Python成绩和C语言成绩)。如果这些内容都符合要求,则将它们保存到字典中,再将该字典添加到列表中并且询问是否继续录入;如果不再录入则结束 while 循环,并调用 write() 函数,将录入的学生信息保存到文件中。add() 函数的具体代码如下:

    def add():
        print('1 录入学生信息')
        flag = True  # 标记是否继续录入学生信息
        stu_infos = []  # 保存学生信息的列表
        while flag:
            stu_id = input('请输入ID(如 1001):')
            if not stu_id:
                break  # id为空,跳出循环
            stu_name = input('请输入姓名:')
            if not stu_name:
                break  # 姓名为空,跳出循环
            try:
                english_score = int(input('请输入英语成绩(请录入1-100的整数):'))
                python_score = int(input('请输入Python成绩(请录入1-100的整数):'))
                c_score = int(input('请输入C语言成绩(请录入1-100的整数):'))
            except ValueError:
                print('输入无效,不是整型数值....重新录入信息')
                continue
    
            # 将输入的学生信息保存到字典
            student = {'stu_id': stu_id, 'stu_name': stu_name, 'english_score': english_score,
                       'python_score': python_score, 'c_score': c_score}
            stu_infos.append(student)  # 将学生字典添加到列表中
            input_mark = input('是否继续添加?(Y/y/N/n):').lower()  # n不继续添加,y继续添加
            if input_mark == 'y':  # 继续添加
                flag = True
            elif input_mark == 'n':  # 不继续添加
                flag = False
            else:
                print('输入有误,默认继续添加')
        if stu_infos:
            write(stu_infos)  # 将学生信息写入文件
            print('学生信息录入完毕!!!')
    
  3. 执行录入学生信息后,将在项目的根目录中创建一个名称为 student_system.txt 的文件,该文件中保存着学生信息。例如,输入 4 条信息后,student_system.txt 文件的内容如下图所示:
    在这里插入图片描述

5.3 实现删除学生信息功能

① 功能概述。 删除学生信息功能主要就是用户在控制台上输入的学生 ID,到磁盘文件中找到对应的学生信息,并将其删除。例如,在功能菜单上输入功能编号 "3" 并且按下 <Enter> 键,系统将提示输入要删除学生的编号,输入相应的学生 ID 后,系统会直接从文件中删除该学生信息,并且提示是否继续删除,如下图所示:
在这里插入图片描述
输入 "y" 系统将会再次提示用户输入要删除的学生编号,输入 "n" 则退出删除功能。

在实现删除学生信息功能时,先要梳理出它的业务流程和实现技术。根据要实现的功能,设计出如下图所示的业务流程和实现技术:
在这里插入图片描述
③ 具体实现。 编写主函数中调用的删除学生信息的函数 delete()。在该函数中,设置一个 while 循环,在该循环中,首先通过 input() 函数要求用户输入要删除的学生 ID;然后以只读模式打开保存学生信息的文件,并且读取其内容保存到一个列表中;再以写模式打开保存学生信息的文件,并且遍历保存学生信息的列表,将每个元素转换为字典,从而方便根据输入的学生 ID 判断是否为要删除的信息。如果不是要删除的信息,则将其重新写入到文件中。delete() 函数的具体代码如下:

def read():
    """读取文本文件中的学生信息"""
    if os.path.exists(file_name):
        with open(file_name, 'r', encoding='utf8') as file:
            return file.readlines()
    else:
        print(f'{file_name}不存在,无法读取学生信息')
        return


def delete():
    print('3 删除学生信息')
    flag = True  # 标记是否循环
    while flag:
        if_del = False  # 标记是否删除
        stu_infos = read()
        del_stu_info = []  # 用于存储被删除的学生信息
        if stu_infos:
            stu_id = input('请输入要删除的学生ID:').strip()
            if not stu_id:  # 输入的学生ID为空 直接退出
                break
            with open(file_name, 'w', encoding='utf8') as file:
                for stu in stu_infos:
                    stu_dic = json.loads(stu.strip())
                    if stu_id != stu_dic['stu_id']:
                        file.write(stu)  # 将一条学生信息写入文件
                    elif stu_id:
                        if_del = True
                        del_stu_info.append(stu_dic)
            if if_del:
                print(f'ID为 {stu_id} 的学生信息已经被删除...')
                show_student(del_stu_info)
            else:
                print(f'没有找到ID为 {stu_id} 的学生信息...')
            input_mark = input('是否继续删除?(Y/y/N/n):').lower()  # n停止删除,y继续删除
            if input_mark == 'y':  # 继续删除
                flag = True
            elif input_mark == 'n':  # 退出删除学生信息功能
                flag = False
                print('学生信息删除完毕!!!')
            else:
                print('输入有误,默认继续删除')
        else:
            print("无学生信息...")
            flag = False

5.4 实现修改学生信息功能

① 功能概述。 修改学生信息功能主要就是根据用户在控制台上输入的学生 ID,从磁盘文件中找到对应的学生信息,再对其进行修改。例如,在功能菜单上输入功能编号 "4" 并且按下 <Enter> 键,系统提示输入要修改学生的编号,输入相应的学生 ID 后,系统会在文件中查找该学生信息,如果找到,则提示可以修改他的信息,否则不修改。最后提示是否继续修改,如下图所示:
在这里插入图片描述
输入 "y",系统将会再次提示用户输入要修改的学生编号,输入 "n",则退出修改功能。

② 业务流程。 在实现修改学生信息功能时,先要梳理出它的业务流程和实现技术,如下图所示:
在这里插入图片描述
③ 具体实现。 modify() 函数的具体代码如下:

def modify():
    print('4 修改学生信息')
    flag = True  # 标记是否循环
    while flag:
        if_modify = False  # 标记是否修改
        stu_infos = read()
        if stu_infos:
            stu_id = input('请输入要修改的学生ID:').strip()
            if not stu_id: break  # 输入的学生ID为空 直接退出
            with open(file_name, 'w', encoding='utf8') as file:
                for stu in stu_infos:
                    stu_dic = json.loads(stu.strip())
                    if stu_id == stu_dic['stu_id']:  # 是否为要修改的学生
                        if_modify = True
                        new_info = {'stu_id': stu_id}
                        print('找到了这名学生,可以修改他的信息')
                        new_info['stu_name'] = input('请输入姓名:')
                        while True:
                            try:
                                new_info['english_score'] = int(input('请输入英语成绩(请录入1-100的整数):'))
                                new_info['python_score'] = int(input('请输入Python成绩(请录入1-100的整数):'))
                                new_info['c_score'] = int(input('请输入C语言成绩(请录入1-100的整数):'))
                                break
                            except ValueError:
                                print('输入无效,不是整型数值....重新录入信息')
                        file.write(json.dumps(new_info, ensure_ascii=False) + '\n')  # 将修改后的学生信息写入文件
                    else:
                        file.write(stu)  # 将未修改的信息写入到文件
            if if_modify:
                print(f'ID为 {stu_id} 的学生信息已经修改成功...')
            else:
                print(f'没有找到ID为 {stu_id} 的学生信息...')
            input_mark = input('是否继续修改?(Y/y/N/n):').lower()  # 是否继续修改
            if input_mark == 'y':  # 继续修改
                flag = True
            elif input_mark == 'n':  # 退出修改学生信息功能
                flag = False
                print('学生信息修改完毕!!!')
            else:
                print('输入有误,默认继续修改')
        else:
            print("无学生信息...")
            flag = False

六、查询/统计模块设计

6.1 查询/统计模块概述

在学生信息管理系统中,查询/统计模块用于查询和统计学生信息。主要包括根据学生编号或姓名查找学生信息、统计学生总人数和显示所有学生信息。在显示获取到的学生信息时,会自动计算总成绩。其中,当用户在功能选择界面中输入数字 "2",即可进入到查找学生信息功能。在这里可以实现根据学生编号或姓名查找学生信息,运行效果如下图所示:

当用户在功能选择界面中输入数字 "6",即可进入到统计学生总人数功能。在这里可以实现统计并显示学生总人数的信息,运行效果如下图所示:
在这里插入图片描述
当用户在功能选择界面中输入数字 "7",即可进入到显示所有学生信息功能。在这里可以实现显示全部学生信息(包括学生的总成绩),运行效果如下图所示:
在这里插入图片描述

6.2 实现查找学生信息功能

① 功能概述。 查找学生信息功能主要是根据用户在控制台上输入的学生 ID 或姓名,到磁盘文件中找到对应的学生信息。例如,在功能菜单上输入功能编号 "2" 并且按下 <Enter> 键,系统将要求用户选择是按学生编号查询还是按学生姓名查询,如果用户输入 "1" 则要求用户输入学生 ID,表示按学生编号查询。接着输入想要查询的学生编号,系统查找该学生信息,如果找到则显示,否则提示没找到。最后提示是否继续查找输入 "y" 系统将再次提示用户选择查找方式,输入 "n" 则退出查找学生信息功能。

② 业务流程。 在实现查询学生信息功能时,先要梳理出它的业务流程和实现技术。根据要实现的功能,设计出如下图所示的业务流程和实现技术。
在这里插入图片描述
③ 具体实现。 编写主函数中调用的查找学生信息的函数 query()。在该函数中,设置一个循环并在该循环中先判断保存学生信息的文件是否存在,如果不存在则给出提示并返回,否则提示用户选择查询方式;然后根据选择的方式到保存学生信息的文件中查找相对应的学生信息,并且调用 show_student() 函数将查询结果进行显示。query() 函数的具体代码如下:

def show_student(student_list):
    """# 将保存在列表中的学生信息显示出来"""
    if not student_list:  # 如果没有要显示的数据
        print("(o@.@o) 无数据信息 (o@.@o) \n")
        return

    # 定义标题显示格式
    format_title = "{:^5}\t\t{:^5}\t{:^5}\t{:^10}\t{:^10}\t{:^15}"
    print(format_title.format("学生ID", "学生姓名", "英语成绩", "Python成绩",
                              "C语言成绩", "总成绩"))  # 按指定格式显示标题

    # 定义具体内容显示格式
    format_data = "{:^5}\t\t{:^5}\t{:^16}\t{:^4}\t{:^20}\t{:5}"
    for info in student_list:  # 通过for循环将列表中的数据全部显示出来
        print(format_data.format(info.get("stu_id"),
                                 info.get("stu_name"), str(info.get("english_score")), str(info.get("python_score")),
                                 str(info.get("c_score")),
                                 str(info.get("english_score") + info.get("python_score") +
                                     info.get("c_score")).center(12)))


def query():
    print('2 查找学生信息')
    flag = True  # 标记循环
    _dict = {'1': {'stu_id': '请输入要查找的学生ID:'}, '2': {'stu_name': '请输入要查找的学生姓名:'}}
    while flag:
        stu_infos = read()
        choice = input('按ID查找输入1:按姓名查找输入2:')
        if choice in _dict:
            input_info = _dict[choice]
            query_list = []
            for key, value in input_info.items():
                inp_value = input(value)
                if inp_value:  # 输入的内容不能为空
                    for stu in stu_infos:
                        stu_dic = json.loads(stu.strip())
                        if inp_value == stu_dic[key]:  # 是否为要查找的学生
                            query_list.append(stu_dic)
                if query_list:
                    show_student(query_list)
                else:
                    print(f'没有找到 {key}{inp_value} 的学生信息...')
        else:
            print('输入有误,请重新输入')
        input_mark = input('是否继续查找?(Y/y/N/n):').lower()  # n不继续添加,y继续添加
        if input_mark == 'y':  # 继续查找
            flag = True
        elif input_mark == 'n':  # 不继续查找
            flag = False
            print('学生信息查找完毕!!!')
        else:
            print('输入有误,默认继续查找')

6.3 实现统计学生总人数功能

① 功能概述。 统计学生总人数功能主要是统计学生信息文件中保存的学生信息个数。例如,在功能菜单上选择 "6 统计学生总人数" 菜单项,并且按下 <Enter> 键,系统将自动统计出学生总人数并显示,如下图所示:
在这里插入图片描述
② 业务流程。 在实现统计学生总人数功能时,先要梳理出它的业务流程和实现技术,如下图所示:
在这里插入图片描述
③ 具体实现。 编写主函数中调用的统计学生总人数的函数 count()。在该函数中,添加一个 if 语句,用于判断保存学生信息的文件是否存在,如果存在则以只读模式打开该文件,读取该文件的全部内容并保存到一个列表中:然后再应用 len() 函数统计该列表的元素个数,即可得到学生的总人数。count() 函数的具体代码如下:

def count():
    if os.path.exists(file_name):  # 判断文件是否存在
        stu_infos = [json.loads(_.strip()) for _ in read() if _]
        if stu_infos:
            print(f'一共有 {len(stu_infos)} 名学生!')
        else:
            print('还没有录入学生信息!')

    else:
        print('暂未保存数据信息...')

6.4 实现显示所有学生信息功能

① 功能概述。 显示所有学生信息功能主要就是将学生信息文件中保存的全部学生信息获取并显示。例如,在功能菜单上选择 "7 显示所有学生信息" 菜单项,并且按下 <Enter> 键,系统将获取并显示全部学生信息,如下图所示:
在这里插入图片描述
② 业务流程。 在实现显示所有学生信息功能时,先要梳理出它的业务流程和实现技术,如下图所示:
在这里插入图片描述
③ 具体实现。 编写主函数中调用的统计学生总人数的函数 show_all()。在该函数中,添加一个 if 语句,用于判断保存学生信息的文件是否存在,如果存在则以只读模式打开该文件,读取该文件的全部内容后保存到一个列表中。然后再遍历该列表,并将其元素转换为字典,再添加到一个新列表中,最后再调用 show_student() 函数将新列表中的信息显示。show_all() 函数的具体代码如下:

def show_all():
**加粗样式**    """展示所有学生信息"""
    if os.path.exists(file_name):  # 判断文件是否存在
        show_student([json.loads(_.strip()) for _ in read()])
    else:
        print("暂未保存数据信息...")

七、排序模块设计

7.1 排序模块概述

在学生信息管理系统中,排序模块用于对学生信息按成绩进行排序。主要包括按英语成绩、Python成绩、C语言成绩和总成绩按升序或降序排列。其中,当用户在功能选择界面中输入数字 "5" ,即可进入到排序功能。在这里先按录入顺序显示学生信息(不排序),然后要求用户选择排序方式,并根据选择方式进行排序显示,运行效果如下图所示:
在这里插入图片描述

7.2 实现按学生成绩排序

① 功能概述。 按学生成绩排序功能主要是对学生信息按英语成绩、Python成绩、C语言成绩或总成绩升序或降序排列。例如,输入功能编号 "5" 并且按下 <Enter> 键,系统将先显示不排序的全部学生信息。然后提示选择按编程语言的排序方式(这里输入 "2"),再选择降序排列(输入 "1"),将对学生信息按 Python 成绩降序排列并显示。

② 业务流程。 在实现按学生成绩排序功能时,先要梳理出它的业务流程和实现技术,如下图所示:
在这里插入图片描述
③ 具体实现。 编写主函数中调用的排序的函数 sort()。在该函数中,首先判断保存学生信息的文件是否存在,如果存在,则打开该文件读取全部学生信息,并将每一名学生信息转换为字典保存到一个新的列表中,然后获取用户输入的排序方式,再根据选择结果进行相应的排序,最后调用 show_student() 函数显示排序结果。sort() 函数的具体代码如下:

def sort():
    print('5 排序')
    flag = True  # 标记循环
    _dict = {'1': 'english_score', '2': 'python_score', '3': 'c_score', '0': 'total_score'}
    while flag:
        choice = input('请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序):')
        asc_or_desc = True if int(input('请选择(0升序;1降序):')) else False
        if choice in _dict:
            stu_infos = [json.loads(_.strip()) for _ in read()]
            new_list = sorted(stu_infos, key=lambda x: x['english_score'] + x['python_score'] + x[
                'c_score'] if choice == '0' else x[_dict[choice]], reverse=asc_or_desc)
            show_student(new_list)

        input_mark = input('是否继续排序?(Y/y/N/n):').lower()  # y继续,n退出
        if input_mark == 'y':  # 继续排序
            flag = True
        elif input_mark == 'n':  # 退出排序功能
            flag = False
            print('学生信息排序完毕!!!')
        else:
            print('输入有误,默认继续排序')

八、打包为.exe可执行文件

Python 项目编写完成后,可以将其打包成一个 .exe 可执行文件,这样就可以在其他计算机上运行该项目了,即使这台计算机上没有安装 Python 开发环境。实现打包 .exe 可执行文件时,需要使用 PyInstaller 模块,该模块为第三方模块所以需要单独安装。PyInstaller 模块支持多种操作系统,如 Windows、Linux、Mac OS 等,但是该模块并不支持跨平台操作。例如:如果是在 Windows 操作系统下打包的 .exe 可执行文件,该文件就只能在 Windows 环境下运行。这里以 Windows 操作系统为例,介绍 PyInstaller 模块的安装。安装 PyInstaller 模块最简单的方式就是在命令提示符窗口中输入 "pip install pyinstaller" 命令进行安装,如下图所示:
在这里插入图片描述
PyInstaller 模块安装完成以后,就可以打包 .py 文件为 .exe 文件了。具体方法如下。

通过 CMD 命令打开命令提示符窗口,在当前光标位置输入:

pyinstaller -F 要打包的.py文件的绝对路径

例如,该文件保存在 "D:\Code\dream\PythonStudy\projects\studentsystem" 目录中,则可以使用下面的代码对其打包:

# ps: 在上面的代码中,参数-F表示只生成一个扩展名为.exe的可执行文件。
C:\Users\amoxiang>pyinstaller -F D:\Code\dream\PythonStudy\projects\studentsystem\student_system.py

输入上面的代码并按下 <Enter> 键,将自动生成 .exe 可执行文件,具体过程如下图所示:
在这里插入图片描述
在上图所示的位置,找到 .exe 文件的保存路径,并且在该路径下找到生成的 .exe 可执行文件,双击该文件即可运行本项目。效果如下图所示:
在这里插入图片描述
说明: 在介绍的 PyInstaller 模块打包程序时,不能把项目中应用的图片、文本文件、音频、视频等资源打包到可执行文件中。因此,在打包后还需要把这些资源复制到与可执行文件相同的目录中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amo Xiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值