Python学习(五)—— Python实现学生管理系统

目录

一,功能介绍

二,创建入口和菜单函数

三,实现增删查操作

3.1 新增

3.2 显示

3.3 查找

3.4 删除

四,加入存档读档

4.1 约定存档格式

4.2 存档函数实现

4.3 读档函数实现

4.4 完整代码

4.5 打包成 exe 程序发布


一,功能介绍

这个系统的主要功能有:

  • 新增学生
  • 显示学生
  • 查找学生
  • 删除学生
  • 存档到文件

二,创建入口和菜单函数

  • 使用一个全局列表 students 表示所有学生信息
  • 使用 menu 函数和用户交互
  • 这是一个自定义函数. 使用 insert , show , find , delete 这几个自定义函数完成增删查操作
  • 使用 sys.exit 实现程序退出.
# 使用列表表示所有的学生
students = []

def menu():
    """
   显示程序菜单
   """
    print(" 1. 新增学生信息")
    print(" 2. 显示所有同学信息")
    print(" 3. 根据名字查找学生信息")
    print(" 4. 删除学生信息")
    print(" 0. 退出程序")
    choice = input(" 请输入您的选择: ")
    return int(choice)

def main():
    """
   程序的入口函数
   """
    print('+--------------------------+')
    print('|     欢迎来带学生管理系统!   |')
    print('+--------------------------+')
    while True:
        choice = menu()
        if choice == 0:
            sys.exit()
        if choice == 1:
            insert()
        elif choice == 2:
            show()
        elif choice == 3:
            find()
        elif choice == 4:
            delete()
        else:
            print('您的输入有误! 请重新输入!')
main()

三,实现增删查操作

3.1 新增

def insert():
    print("[新增学生] 开始!")
    studentId = input("请输入学生的学号: ")
    name = input("请输入学生的姓名: ")
    gender = input("请输入学生的性别: ")
    if gender not in ('男', '女'):
        print("性别不符合要求! 新增学生失败!")
        return
    className = input("请输入学生的班级: ")
    # 使用一个字典表示学生信息
    student = {
        'studentId': studentId,
        'name': name,
        'gender': gender,
        'className': className
    }
    # 把字典添加到学生列表中
    global students
    students.append(student)
    print("[新增学生] 完毕!")

3.2 显示

def show():
    print("[显示学生] 开始!")
    for s in students:
        print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
    print(f"[显示学生] 完毕! 共显示了 {len(students)} 条记录!")

3.3 查找

def find():
    print("[查找学生] 开始!")
    name = input("请输入要查找的同学姓名: ")
    count = 0
    for s in students:
        if name == s['name']:
            print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
            count += 1
    print(f"[查找学生] 完毕! 共查找到 {count} 条记录!")

3.4 删除

def delete():
    print("[删除学生] 开始!")
    studentId = input("请输入要删除的同学学号: ")
    count = 0
    for s in students:
        if studentId == s['studentId']:
            print(f"删除 {s['name']} 同学的信息!")
            students.remove(s)
            count += 1
    print(f"[删除学生] 完毕! 共删除 {count} 条记录!")

四,加入存档读档

4.1 约定存档格式

我们约定存档文件放到当前目录的 record.txt 文件中,并以行文本的方式来保存学生信息,如下:

学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
  • 每个学生占一行
  • 每个学生的信息之间用 \t 进行分割 

4.2 存档函数实现

def save():
    """
   存档函数
   """
    with open('record.txt', 'w') as f:
        for s in students:
            f.write(f"
{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")
    print(f"[存档成功] 共存储了 {len(students)} 条记录!")

然后再 insert 和 delete 末尾调用save进行存档 

save()

4.3 读档函数实现

def load():
    """
   读档函数
   """
    # 如果存档文件不存在, 则跳过读档环节
    if not os.path.exists('record.txt'):
        return
    # 先清空全局变量里的数据
    global students
    students = []
    with open('d:/record.txt', 'r') as f:
        for line in f:
            # 去除末尾的换行符
            line = line.strip()
            tokens = line.split('\t')
            if len(tokens) < 4:
                print(f"文件格式有误! line={line}")
                continue
            student = {
                'studentId': tokens[0],
                'name': tokens[1],
                'gender': tokens[2],
                'className': tokens[3]
           }
            students.append(student)
    print(f"[读档成功] 共读取了 {len(students)} 条记录!")

然后在 main函数开头时,调用 load 加载存档

load()

4.4 完整代码

import sys
import os

def save():
    """
   存档函数
   """
    with open('record.txt', 'w') as f:
        for s in students:
            f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")
    print(f"[存档成功] 共存储了 {len(students)} 条记录!")

def load():
    """
   读档函数
   """
    # 如果存档文件不存在, 则跳过读档环节
    if not os.path.exists('record.txt'):
        return
    # 先清空全局变量里的数据
    global students
    students = []
    with open('record.txt', 'r') as f:
        for line in f:
            # 去除末尾的换行符
            line = line.strip()
            tokens = line.split('\t')
            if len(tokens) < 4:
                print(f"文件格式有误! line={line}")
                continue
            student = {
                'studentId': tokens[0],
                'name': tokens[1],
                'gender': tokens[2],
                'className': tokens[3]
           }
            students.append(student)
    print(f"[读档成功] 共读取了 {len(students)} 条记录!")

# 使用列表表示所有的学生
students = []

def menu():
    print(" 1. 新增学生信息")
    print(" 2. 显示所有同学信息")
    print(" 3. 根据名字查找学生信息")
    print(" 4. 删除学生信息")
    print(" 0. 退出程序")
    choice = input(" 请输入您的选择: ")
    return int(choice)

def insert():
    print("[新增学生] 开始!")
    studentId = input("请输入学生的学号: ")
    name = input("请输入学生的姓名: ")
    gender = input("请输入学生的性别: ")
    if gender not in ('男', '女'):
        print("性别不符合要求! 新增学生失败!")
        return
    className = input("请输入学生的班级: ")
    # 使用一个字典表示学生信息
    student = {
        'studentId': studentId,
        'name': name,
        'gender': gender,
        'className': className
    }
    # 把字典添加到学生列表中
    global students
    students.append(student)
    save()
    print("[新增学生] 完毕!")

def show():
    print("[显示学生] 开始!")
    for s in students:
        print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
    print(f"[显示学生] 完毕! 共显示了 {len(students)} 条记录!")

def find():
    print("[查找学生] 开始!")
    name = input("请输入要查找的同学姓名: ")
    count = 0
    for s in students:
        if name == s['name']:
            print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
            count += 1
    print(f"[查找学生] 完毕! 共查找到 {count} 条记录!")

def delete():
    print("[删除学生] 开始!")
    studentId = input("请输入要删除的同学学号: ")
    count = 0
    for s in students:
        if studentId == s['studentId']:
            print(f"删除 {s['name']} 同学的信息!")
            students.remove(s)
            count += 1
    save()
    print(f"[删除学生] 完毕! 共删除 {count} 条记录!")

def main():
    load()
    print('+--------------------------+')
    print('|     欢迎来带学生管理系统!   |')
    print('+--------------------------+')
    while True:
        choice = menu()
        if choice == 0:
            sys.exit()
        if choice == 1:
            insert()
        elif choice == 2:
            show()
        elif choice == 3:
            find()
        elif choice == 4:
            delete()
        else:
            print('您的输入有误! 请重新输入!')

main()

4.5 打包成 exe 程序发布

当前虽然已经实现了一个管理系统, 但是 .py 的文件只能在安装了 Python 环境的机器上运行. 为了能够更好的部署到其他主机上, 可以借助 pyinstaller 来把 Python 程序打包成 exe 程序.

先安装 pyinstaller:

 然后我们可以在 PyCharm 的终端里进行打包,如果提示说找不到命令,可以重启下 PyCharm:

 打包完成后,就可以找到生成了 exe 程序了:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值