python笔记

将编写好的程序编译成可执行文件

  1. 安装第三方工具(在线安装)pip install PyInstaller命令安装(如果pip找不到,就去你的python的安装目录的Scripts目录下找到pip的执行文件在文件目录栏中cmd进入即可)
  2. 将程序打包成exe的可执行文件:

pyinstaller -F 程序的目录地址(E:\baiduwanpan\python\chapter06\com.kusen\main.py)

 

带生成的程序路径

  

可执行文件的路径

学习python练习程序 (学生管理系统)


import os

file_name = "student.txt"


def show():
    # 读取文件中的数据
    with open(file_name, 'r', encoding="utf-8") as fileName:
        list = fileName.readlines()
        if list:
            print('id\t\t\t姓名\t\t\t年龄\t\t\t性别\t\t\t成绩')
            for item in list:
                d = dict(eval(item))
                print(
                    d['stuid'] + '\t\t\t' + d['stuname'] + '\t\t\t' + d['stuage'] + '\t\t\t' + d['stusex'] + '\t\t\t' +
                    d['stucour'], )
        else:
            print("没有学生数据")


def update():
    if os.path.exists(file_name):
        with open(file_name, 'r', encoding='utf-8') as rfile:
            stu_old = rfile.readlines()
    else:
        print("文件不存在")
        return
    stuid = input("请输入要修改的学员id:")
    with open(file_name, 'w', encoding='utf-8') as wfile:
        for item in stu_old:
            d = dict(eval(item))
            if d["stuid"] == stuid:
                print("找了要修改的学生~~~~~")
                d['stuname'] = input('请输入学生姓名:')
                d['stuage'] = input('请输入学生年龄:')
                d['stusex'] = input('请输入学生性别:')
                d['stucour'] = input('请输入学生成绩:')
                wfile.write(str(d) + "\n")
            else:
                wfile.write(str(d) + "\n")
    result = input("是否还要修改学生数据(y/n):")
    if result == 'y':
        update()


def delstu():
    while True:
        stuid = input("请输入学生的id:")
        if stuid != '':
            # 对文件判断
            if os.path.exists(file_name):
                with open(file_name, 'r', encoding='utf-8') as file:
                    stu_list = file.readlines()
            else:
                stu_list = []
            flag = False  # 标记是否删除
            if stu_list:
                with open(file_name, 'w', encoding='utf-8') as wfile:
                    d = {}
                    for item in stu_list:
                        d = dict(eval(item))  # 将字符串的数据转成字典类型的数据
                        print(d['stuid'] != stuid)
                        if d['stuid'] != stuid:
                            wfile.write(str(d) + '\n')
                        else:
                            flag = True
                if flag:
                    print(f'学生id为{stuid}的学生信息已被删除')
                else:
                    print("没有找到该学生的信息!")
                    continue
            else:
                print("无学生数据")
                break
        show()
        delf = input("是否继续删除学生信息(y/n):")
        if delf == 'y':
            continue
        else:
            break


def search():
    if os.path.exists(file_name):
        id = ""
        name = ""
        stu_list = []
        flag = int(input("请选择查询方式:1:id查询、2:姓名查询"))
        if flag == 1:
            id = input("请输入学生的id:")
        elif flag == 2:
            name = input("请输入学生姓名:")
        else:
            print("输入有误,请重新输入~~~")
            search()
        with open(file_name, 'r', encoding='utf-8') as rfile:
            list = rfile.readlines()
        if id != "":
            for item in list:
                d = dict(eval(item))
                if d["stuid"] == id:
                    stu_list.append(d)
        if name != "":
            for item in list:
                d = dict(eval(item))
                if d["stuname"] == name:
                    stu_list.append(d)
        searchStu(stu_list)
    else:
        print("文件不存在")
        return


def searchStu(list):
    if len(list) == 0:
        print("没有查询到学生数据")
    else:
        print('id\t\t\t姓名\t\t\t年龄\t\t\t性别\t\t\t成绩')
        for d in list:
            print(
                d['stuid'] + '\t\t\t' + d['stuname'] + '\t\t\t' + d['stuage'] + '\t\t\t' + d['stusex'] + '\t\t\t' + d[
                    'stucour'], )
    flag = input("是否继续查询学生(y/n):")
    if flag == 'y':
        search()
    else:
        print("退出查询学生信息")


def sort():
    while True:
        show()
        rel = input("请输入排序方式:1:成绩排序 2:id排序")
        acd_desc = input("请输入排序方式:1:升序 2:降序")
        asc_desc_bool = False
        if acd_desc == '1':
            asc_desc_bool = True
        with open(file_name, 'r', encoding='utf-8') as rfile:
            source = rfile.readlines()
            stu_list=[]
            for item in source:
                stu_list.append(dict(eval(item)))
            if rel == '1':
                stu_list.sort(key=lambda x: int(x['stucour']), reverse=asc_desc_bool)
            else:
                stu_list.sort(key=lambda x: int(x["stuid"]), reverse=asc_desc_bool)
                print('id\t\t\t姓名\t\t\t年龄\t\t\t性别\t\t\t成绩')
            for d in stu_list:
                print(
                    d['stuid'] + '\t\t\t' + d['stuname'] + '\t\t\t' + d['stuage'] + '\t\t\t' + d['stusex'] + '\t\t\t' +
                    d['stucour'], )

        flag = input("还要继续排序嘛(y/n)?")
        if flag == 'y':
            continue
        else:
            print("排序结束")
            break


def save():
    student_list = []
    while True:
        stuid = input("请输入学生id:")
        stuname = input("请输入学生姓名:")
        stuage = input("请输入学生年龄:")
        stusex = input("请输入学生性别")
        try:
            stucour = input("请输入学生成绩:")
        except:
            print("输入有误!!")
            continue
        else:
            student = {"stuid": stuid, "stuname": stuname, "stuage": stuage, "stusex": stusex, "stucour": stucour}
            student_list.append(student)
            flag = input("是否继续录入学生信息(y/n):")
            if flag == 'y':
                continue
            else:
                break
    # 将数据保存到文件中
    saveFile(student_list)
    print("学生信息录入完毕!")


def saveFile(list):
    try:
        # 打开文件,以追加的方式来完成,文件存在的情况下
        txt = open(file_name, 'a', encoding='utf-8')
        pass
    except:
        # 打开文件,以写入的方式打开,文件不存在的情况下
        txt = open(file_name, 'w', encoding='utf-8')
    for itme in list:
        txt.write(str(itme) + '\n')
    txt.close()  # 关闭文件


def count():
    # 统计学生人数
    if os.path.exists(file_name):
        with open(file_name, 'r', encoding='utf-8') as rfile:
            rel = rfile.readlines()
            print('一共有' + str(len(rel)) + "名学生")
    else:
        print("文件不存在")
        return


if __name__ == '__main__':
    while True:
        print("-----------使用学生管理系统-----------")
        print("\t\t\t\t\t1.添加学生")
        print("\t\t\t\t\t2.查询学生")
        print("\t\t\t\t\t3.修改学生")
        print("\t\t\t\t\t4.删除学生")
        print("\t\t\t\t\t5.排序")
        print("\t\t\t\t\t6.统计人数")
        print("\t\t\t\t\t7.展示学生")
        print("\t\t\t\t\t8.退出")
        print("-----------------------------------")
        resunt = int(input("请选择:"))
        if resunt == 1:
            save()
        elif resunt == 2:
            search()
        elif resunt == 3:
            update()
        elif resunt == 4:
            delstu()
        elif resunt == 5:
            sort()
        elif resunt == 6:
            count()
        elif resunt == 7:
            show()
        elif resunt == 8:
            str = input("请确认退出(y/n):")
            if (str == 'y' or str == 'Y'):
                print("感谢你的使用!!")
                break
            else:
                continue

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值