Python 做一套学生管理系统


def show_choose():
    print("==========================学生信息管理系统==========================")
    print()
    print("-----------------------------功能菜单------------------------------")
    print()
    print("                         1.录入学生信息")
    print("                         2.查找学生信息")
    print("                         3.删除学生信息")
    print("                         4.修改学生信息")
    print("                         5.统计学生总数")
    print("                         6.显示学生信息")
    print("                         0.退出信息管理系统")
    print()
    print("------------------------------------------------------------------")

def input_info():
    infile_info = open('infile.txt', 'a')
    stu_id = input("请输入学生学号(如2020001):")
    stu_name = input("请输入学生姓名:")
    stu_sex = input("请输入学生性别:")
    stu_tel = input("请输入学生电话号:")
    stu_info = stu_id + '\t' + stu_name + '\t' + stu_sex + '\t' + stu_tel + '\t'
    infile_info.write(stu_info)
    print("学生信息录入完毕")
    infile_info.close()


def find_info():
    n = 0
    m = 0
    findfile_info = open('infile.txt', 'r')  # 以可读方式打开文件
    line_info = findfile_info.readlines()   #readlines 函数一行一行的读取文件,返回的是一个列表
    find_nid = input("按学号查找请输入1,按姓名查找请输入2:")  # 查询方式分为按学号和按姓名
    if find_nid == '1':
        find_id = input('请输入学生学号:')
        for line in line_info:
            if find_id in line:
                print(line)
                n = n + 1
        if n == 0:
            print("没有查询到学生信息,无数据显示!")
    if find_nid == '2':
        find_name = input('请输入学生姓名:')
        for line in line_info:
             if find_name in line:
                 print(line)
                 m = m + 1
        if m == 0:
            print("没有查询到学生信息,无数据显示!")
    findfile_info.close()


def del_info():
    n = 0  # 用以查无此人时的标记
    defile_info1 = open('infile.txt', 'r')  # 以可读方式打开文件
    line_info = defile_info1.readlines()  # 将文件的信息按行全部读取出来
    defile_info2 = open('infile.txt', 'w')  # 以可写方式打开文件,用来将删除后的信息写入文件
    del_id = input("请输入要删除的学生的学号:")
    for line in line_info:  # 可以用后面的信息向前移动覆盖这条信息
        if del_id in line:
            continue
        defile_info2.write(line)
        n = n + 1
    if n == len(line_info):
        print("无此学生信息,请核对后再操作!")
    else:
        print("学号为{0}的学生信息已被删除!".format(del_id))
    defile_info1.close()
    defile_info2.close()


def mod_info():
    n = 0  # 用以查无此人时的标记
    mod_id = input("请输入要修改的学生学号:")
    modfile_file1 = open('infile.txt', 'r')  # 以可读方式打开文件,读取到line_info中,每一行就是一个列表的元素
    line_info = modfile_file1.readlines()
    modfile_file2 = open('infile.txt', 'w')  # 用以写入修改后的数据
    for line in line_info:  # 遍历列表
        if mod_id in line:  # 如果修改的学生信息存在,就重新写入学生信息
            print("已找到学生,请修改信息!")
            mod_name = input("请输入姓名:")
            mod_sex = input("请输入性别:")
            mod_tel = input("请输入电话号:")
            mod_stu_info = mod_id + '\t' + mod_name + '\t' + mod_sex + '\t' + mod_tel + '\n'
            modfile_file2.write(mod_stu_info)
            print("修改成功!!!")
            continue
        modfile_file2.write(line)  # 由于w方式打开的文件重新后会覆盖原有数据,所以需要将原有数据写入
        n = n + 1
    if n == len(line_info):
        print("无此学生信息,请核对后再操作!")
    else:
        print("学号为{}的学生信息已修改!".format(mod_id))      #format匹配字符串
    modfile_file1.close()
    modfile_file2.close()


def show_num():
    n = 0
    numfile = open('infile.txt','r')
    num_info = numfile.readlines()
    n = len(num_info)
    print("一共有{}名学生".format(n))
    numfile.close()


def main():
    show_choose()
    choose_menu = input("请选择:")
    while choose_menu != '0':
        if choose_menu == '1':
            input_info()
        if choose_menu == '2':
            find_info()
        if choose_menu == '3':
            del_info()
        if choose_menu == '4':
            mod_info()
        if choose_menu == '5':
            sum_info()
        if choose_menu == '6':
            show_info()
        choose_menu = input("请选择:")

    print("欢迎您再次使用!")


if __name__ == '__main__':
    main()

注意其中的很多语法,定时重温。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值