学生信息管理系统

'''
以特定模式打开文件,w(写入文本,会覆盖原有的内容),r(读取文本内容、、前提是文本存在,否则报错)
r+(读写文本),a(写入文本,追加模式,不会覆盖原有内容)
with open('file','模式')

del line[数字] 删除列表特定位置元素
line.append(元素) 列表添加新元素
line.insert(数字,元素) 向特定位置添加新元素,该位置后的元素索引右移
'''
import os
import re
print('         欢迎来到学生信息管理系统            ')
print('1: 添加学生信息')
print('2: 删除学生信息')
print('3: 修改学生信息')
print('4: 查询学生信息')
# 判读学生信息是否存在
def judge(judge_studentname):
    k = False
    # 遍历文档内容,读取文件,判读学生信息是否存在
    with open('student.txt','r') as file:
        text=file.readlines()
        for line in text:
            line = list(eval(line))
            if line[0] == judge_studentname:
                k=True
    # 成员不存在返回值为True
    if not k:
        return True
    # 成员存在返回值为 False
    return False
# 添加学生信息
def newstudent():
    # 空列表存储新学生信息
    new_studet = []
    newstudent_name = input('姓名')
    # 正则表达式,re.compile() 判断文本内容是否包含特定内容,包含为真,不包含为假
    judgement_name = re.compile('[0-9]+|[a-z]+|[A-Z]+').findall(newstudent_name)
    if judgement_name:
        while True:
            print('姓名输入有误')
            newstudent_name = input('请重新输入')
            again_judgement_name = re.compile('[0-9]+|[a-z]+|[A-Z]+').findall(newstudent_name)
            if not again_judgement_name:
                print('输入正确')
                break
    # 添加学生名字于列表中
    new_studet.append(newstudent_name)
    # 学生学号
    newstudent_num = input('学号')
    # 正则表达式 判断学号
    judgement_num = re.match(r'^171105010[1-9]\d{1}$', newstudent_num)
    if not judgement_num:
        while True:
            print('学号输入有误')
            newstudent_num = input('请重新输入')
            judgement = re.match(r'^171105010[1-9]\d{1}$', newstudent_num)
            if judgement:
                print('输入正确')
                break
    new_studet.append(newstudent_num)
    # 学生英语成绩
    newstudent_English = input('英语成绩')
    judgement_English = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_English)
    if judgement_English or int(newstudent_English) > 150:
        while True:
            print('英语成绩输入有误')
            newstudent_English = input('请重新输入:')
            judgement_English = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_English)
            if not judgement_English or int(newstudent_English) <150 or int(newstudent_English) ==150:
                print('输入正确')
                break
    new_studet.append(newstudent_English)
    # 学生数学成绩
    newstudent_Math = input('数学成绩')
    judgement_Math = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_Math)
    if judgement_Math or int(newstudent_Math) > 150:
        while True:
            print('数学成绩输入有误')
            newstudent_Math = input('请重新输入:')
            judgement_Math = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_Math)
            if not judgement_Math or int(newstudent_Math) <150 or int(newstudent_Math) ==150:
                print('输入正确')
                break
    new_studet.append(newstudent_Math)
    newstudent_Chinese = input('语文成绩')
    judgement_Chinese = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_Chinese)
    if judgement_Chinese or int(newstudent_Chinese) > 150:
        while True:
            print('语文成绩输入有误')
            newstudent_Chinese = input('请重新输入:')
            judgement_Chinese = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_Chinese)
            if not judgement_Chinese or int(newstudent_Chinese) <150 or int(newstudent_Chinese) ==150:
                print('输入正确')
                break
    new_studet.append(newstudent_Chinese)
    with open('student.txt','a') as file:
        file.writelines('{}\n'.format(new_studet))
    return 0

# 删除学生信息
def deletestudent(del_studentname):
    #删除学生信息名字
    # 调用判断成员是否存在函数
    if judge(del_studentname):
        print('该成员不存在')
        return 0
    #以只读模式打开student.txt
    with open('student.txt','r+') as file:
        #逐行读取文档内容
        text=file.readlines()
    # 以读写模式打开student.txt,该模式写入文本,但会覆盖文档的原有内容
    with open('student.txt','w') as file:
        #逐行遍历文档内容
        for line in text:
            # 字符串转化为列表
            line=list(eval(line))
            # 判断每行信息是否为输入用户的信息
            if line[0] != del_studentname:
                # 将每行不是删除用户的信息写入文档中,进而达到删除学员的目的。
                file.writelines('{}\n'.format(line))
        print('删除成功')
        return 0
# 修改学生信息
def changestudent(changestudent_name):
    # 调用判断成员是否存在函数
    judge(changestudent_name)
    if judge(changestudent_name):
        print('该成员不存在')
        return 0
    with open('student.txt','r+') as file:
        text = file.readlines()
        for line in text:
            line = list(eval(line))
            if line[0] == changestudent_name:
                # 将要修改的学生信息赋值
                change_line = line
                break
    while True:
        print('a:修改英语成绩')
        print('b:修改数学成绩')
        print('c:修改语文成绩')
        print('d:修改学生学号')
        print('e:退出修改学员信息')
        change_student = input('请输入修改操作')
        if change_student == 'a':
            new_English = input('新英语成绩')
            del change_line[2]
            change_line.insert(2,new_English)
            with open('student.txt','w') as file:
                for line in text:
                    line = list(eval(line))
                    if line[0] != changestudent_name:
                        file.writelines('{}\n'.format(line))
            with open('student.txt','a') as file:
                print('哈哈哈哈')
                change_line = str(change_line)
                file.write('{}\n'.format(change_line))
            print('英语成绩已更新')
            continue
        elif change_student == 'b':
            new_math = input('新数学成绩')
            del change_line[3]
            change_line.insert(3, new_math)
            with open('student.txt', 'w') as file:
                for line in text:
                    line = list(eval(line))
                    if line[0] != changestudent_name:
                        file.writelines('{}\n'.format(line))
            with open('student.txt', 'a') as file:
                change_line = str(change_line)
                file.write('{}\n'.format(change_line))
            print('数学成绩已更新')
            continue
        elif change_student == 'c':
            new_Chinese = input('新语文成绩')
            del change_line[4]
            change_line.insert(4, new_Chinese)
            with open('student.txt', 'w') as file:
                for line in text:
                    line = list(eval(line))
                    if line[0] != changestudent_name:
                        file.writelines('{}\n'.format(line))
            with open('student.txt', 'a') as file:
                file.write('{}\n'.format(change_line))
            print('语文成绩已更新')
            continue
        elif change_student == 'd':
            new_num = input('新学号')
            del change_line[1]
            change_line.insert(1, new_num)
            with open('student.txt', 'w') as file:
                for line in text:
                    line = list(eval(line))
                    if line[0] != changestudent_name:
                        line = str(line)
                        file.writelines('{}\n'.format(line))
            with open('student.txt', 'a') as file:
                change_line = str(change_line)
                file.write('{}\n'.format(change_line))
            print('学号已更新')
            continue
        elif change_student == 'e':
            print('退出修改学员信息')
            return 0
# 查询学生信息
def querystudent():
    with open('student.txt','a+') as file:
        pass
    with open('student.txt','r') as file:
        text = file.read()
        print(text.rstrip())
while True:
    x = input('请选择增删改查操作: ')
    if x == '1':
        print('添加学生信息')
        newstudent()
        continue
    elif x == '2':
        print('删除学生信息')
        del_studentname = input('请输入名字: ')
        judge_del = input('是否删除{}y/n:'.format(del_studentname))
        if judge_del == 'y':
            deletestudent(del_studentname)
            continue
        elif judge_del == 'n':
            print('取消删除成功')
            continue
        else:
            print('输入有误')
            while True:
                judge_del = input('是否删除{}y/n:'.format(del_studentname))
                if judge_del == 'y':
                    deletestudent(del_studentname)
                    break
                elif judge_del == 'n':
                    print('取消删除成功')
                    break
                else:
                    print('输入有误')
    elif x == '3':
        print('修改学生信息')
        changestudent_name = input('请输入名字')
        changestudent(changestudent_name)
        continue
    elif x == '4':
        print('查询学生信息')
        querystudent()
        continue
    elif x == '退出':
        exit()
    else:
        print('输入有误')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值