案例2:学生管理系统(Python)——小白变大神~~

本案例基于基础语法的操作+定义函数的定义,利用一个学生管理系统来贯穿Python的基础应用;

一、介绍一下本案例需要用到的基础知识~~

建议结合前文(案例1)食用,风味更佳~~~

基础语法(进阶版):

       函数: 函数的定义、函数的调用、函数的参数传递过程、函数的执行过程

       列表:a1=[](查找、删除、连接)

       元组:a2=()(访问下标、切片、遍历、查找、删除、拼接、只读)

       字典:a3={}(查找key、新增/修改、删除、遍历、哈希)

二、系统构思:

本案例的思路主线还是比较清晰的,主要涉及到增删改查这类的系统基础操作~~

接下来就展示一下:

案例2:学生管理系统(Python)——小白变大神~~_第1张图片

 三、代码示例:

代码段方便食用~~已注释~~

#学生管理系统(增删改查)
import os.path
import sys

#使用这个全局变量来管理所有的学生信息
#这个列表的每个元素都是一个“字典”,每个字典代表一个同学
students = []

def save():
    """
    用于存档
    :return:
    """
    #此处的路径不是以d:开头的“绝对路径,而是相对路径。
    with open('record.txt','w',encoding='utf8') 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():
    """
    用于读档
    :return:
    """
    #如果存档文件不存在,则直接跳过读档流程;
    #为了避免读方式打开文件的时候,文件不存在引起异常。
    if not os.path.exists('record.txt'):
        return

    #读档的视乎要保证先把旧的数据清理干净
    global students
    students=[]
    with open('record.txt','r',encoding= 'utf8') as f:
        for line in f:
            #针对这一行数据,按照\t进行切分操作!
            #切分之前,要先出去末尾的换行
            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)}条记录!")



def menu():
    print('1.新增学生')
    print('2.显示学生')
    print('3.查找学生')
    print('4.删除学生')
    print('0.退出程序')
    choice = input("请输入您的选择:")
    return choice
#入口函数
def main():
    """
    入口函数
    :return:
    """
    #通过控制台和用户进行交互
    print('--------------------------------------------')
    print('              欢迎来到学生管理系统               ')
    print('--------------------------------------------')
    #读档
    load()
    while True:
        #通过menu函数来打印菜单项
        choice = menu()
        if choice == '1':
            #新增学生
            insert()
        elif choice == '2':
            #显示学生
            show()
        elif choice == '3':
            #查找学生
            find()
        elif choice == '4':
            #删除学生
            delete()
        elif choice == '0':
            #退出程序
            print("Goodbye!")
            sys.exit(0)
        else:
            print('您的输入有误!请重新输入!!')
            #可加可不加countinue 本身while逻辑可重新进入循环
            #continue


#新增学生 insert()
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
    }
    #使用全局变量(students)将上述学生信息整合
    global students
    students.append(student)
    #存档
    save()
    print('[新增学生]执行完毕!')


#显示学生 show()
def show():
    print('[显示学生]开始!')
    #遍历全局变量的这个列表,把每个学生的信息打印出来
    for s in students:
        print(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")
    print(f'[显示学生]完毕!共显示了{len(students)}条数据!')


#查找学生 find()
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}个匹配的学生!")

#删除学生 delete()
def delete():
    print("[删除学生]开始!")
    studentId = input("请输入要删除的学生学号:")
    #看看这个学号所对应的同学所在的字典,并在列表中删除这个字典
    for s in students:
        if studentId == s['studentId']:
            print(f"[删除{s['name']}同学的信息]")
            students.remove(s)
    #存档
    save()
    print("[删除学生]结束!")

#数据存储(\t分割)



main()

接下来直接上菜~~:

案例2:学生管理系统(Python)——小白变大神~~_第2张图片

 

结语:诸如此类的系统~~大家可以多多练手哦~~

你可能感兴趣的:(服务器,python)