2018-08-31 Day10-作业(优化学生管理系统)

要求:
1、增加文件文件操作,让所有增加、修改、删除操作后的结果保存在文件里面。
2、增加用户登录系统,不同用户只能管理自己所对应的学生系统

"""__author__=Deathfeeling"""
# 要求:
# 1、增加文件文件操作,让所有增加、修改、删除操作后的结果保存在结果里面。
# 2、增加用户登录系统,不同用户只能管理自己所对应的学生系统



manager_name = ''  #存储管理员信息
manager_passwd = ''
manager =[]

#登录界面
while True:
    print('==========================================================')
    print('      Welcome To QianFeng Student Manager System ')
    print('                      1.Login')
    print('                      2.Logon')
    print('                      3.Out')
    print('==========================================================')
    n = input('请输入你想执行的功能:')
    if n == '1':  # 注册
        manager_name = input('请输入用户名:')
        manager_passwd = input('请输入密码:')
        manager_passwd_re = input('请确认密码:')
        if manager_passwd != manager_passwd_re:   #判断两次输入密码是否相同
            print('两次输入密码不正确,请重新注册!')
            continue
        elif manager_passwd == manager_passwd_re:
            print('注册成功!')
            dict_manager = {'name':manager_name,'passwd':manager_passwd}
            manager.append(dict_manager)
            #将注册信息追加在manager.txt文件中
            f = open('./manager.txt','a')
            f.write(str(dict_manager['name']) + ' ')
            f.write(str(dict_manager['passwd']) + '\n')
            f.close()
            continue
    elif n == '2':  # 登录
        logon_name = input('请输入用户名:')
        logon_passwd = input('请输入密码:')
        # 打开manager.txt文件,查看有没有相应管理员信息
        try:
            f_logon = open('./manager.txt','r')
            f_logon_1 = f_logon.readline()
            while f_logon_1:
                info = f_logon_1.split()   #把字符串的空格前后分割成两个字符串存在一个列表中
                if info[0] == logon_name and info[1] == logon_passwd:
                    print('登录成功!')
                    temp = 1
                    break
                f_logon_1 = f_logon.readline()
            else:
                temp = 0
                print('账号或者密码不正确!请重新输入!')
            f_logon.close()
            if temp:   #temp=1,跳出循环进入系统管理界面
                break
            elif not temp: #temp = 0 ,表示密码不正确,重新输入
                continue
        except IOError:   #没有找到文件抛出异常,提示用户注册
            print('没有查找到相关信息,请注册!')
            continue
    elif n == '3':  # 退出
        exit('系统已退出...')
    else:  # 输入不合法,提示重新输入
        print('输入错误,请按照提示输入!')
        while True:
            print('请选择:1(继续)、2(退出):')
            n = input('请输入数字:')
            if n == '1':  # 输入合法性判断
                break
            elif n == '2':
                exit('退出系统...')
            else:  # 输入错误,提示重新输入
                print('输入错误!请重新输入!')
                continue
        continue

#学生管理系统
name = ''   #存储学生用户信息
age = ''
tel = ''
while True:
    print('=================================================')
    print('                  1.添加学生信息')
    print('                  2.查看学生信息')
    print('                  3.修改学生信息')
    print('                  4.删除学生信息')
    print('                  5.退出')
    print('=================================================')
    n = input('请输入你想执行的功能:')
    if n == '1':    #添加信息
        name = input('请添加学生姓名:')
        age = input('请添加学生年龄:')
        tel = input('请添加学生电话:')
        student_file = open(logon_name + '.txt', 'a')  # 打开并创建管理员对应的学生管理文件
        student_file.write(name+' '+age+' '+tel+'\n')
        student_file.close()
        print('添加成功!')
        continue
    elif n == '2':    #查看信息
        try:
            student_file = open(logon_name + '.txt','r')
            re = student_file.readline()
            while re:
                list1 = re.split()   #以空格为界,切分成3个字符串元素组成的列表
                print('姓名:%s 年龄:%s 电话:%s'%(list1[0],list1[1],list1[2]))
                re = student_file.readline()
            student_file.close()
        except IOError:
            print('没有任何学生信息,请添加!')
            continue

    elif n == '3':    #修改信息
        temp_samename = []    #姓名相同时,临时存储姓名
        list2_name_index = []  #存相同名字学生对应list2的下标
        name_change = input('请输入你想要修改信息的学生姓名:')
        list2 = []   #存储文件信息
        student_file = open(logon_name + '.txt','r') #先按行读入列表
        re = student_file.readline().rstrip('\n') #rstip('\n')去掉字符串末尾的换行符
        while re :
            list2.append(re)
            re = student_file.readline().rstrip('\n')

        nn1 = 0
        for count in range(len(list2)):
            temp_list = list2[count].split()
            if temp_list[0] == name_change:
                temp_samename.append(list2[:].pop(count))
                list2_name_index.append(count)
            elif count == len(list2) - 1:
                if not temp_samename:
                    nn1 = 1
                    print('没有查找到对应学生')
        if nn1 == 1:    #没有查找的到对应学生回到管理页面
            continue
        count_1 = 0
        #相同姓名学生处理
        for index in temp_samename:
            temp_list_1 = index.split()
            print('%d、姓名:%s 年龄:%s 电话:%s' % (count_1,temp_list_1[0], temp_list_1[1], temp_list_1[2]))
            count_1 += 1
        n = input('请输入你要修改的学生信息(数字):')
        for index in range(len(temp_samename)):
            if n == str(index):
                nn = temp_samename[index].split()
                nn[1] = input('请输入你想要修改的年龄:')
                nn[2] = input('请输入你想要修改的电话:')
                temp_samename[int(n)]= nn[0] + ' ' + nn[1] + ' ' + nn[2]
                print('修改成功!')
                break
            elif index == len(temp_samename) -1 :
                if n != str(index):
                    print('输入错误!')
                    break
        #把修改后的姓名表替换到list2表中
        nn2 = 0
        for index in list2_name_index:
            list2[index] = temp_samename[nn2]
            nn2 += 1
        #再把修改后的列表值写入文件
        student_file.close()
        student_file_2 = open(logon_name + '.txt','w')
        for i in list2:
            student_file_2.write(i+'\n')
        student_file_2.close()
        continue

    elif n == '4':    #删除信息
        temp_samename = []    #姓名相同时,临时存储姓名
        list2_name_index = []  #存相同名字学生对应list2的下标
        name_change = input('请输入你想要删除信息的学生姓名:')
        list2 = []   #存储文件信息
        student_file = open(logon_name + '.txt','r') #先按行读入列表
        re = student_file.readline().rstrip('\n') #rstip('\n')去掉字符串末尾的换行符
        while re :
            list2.append(re)
            re = student_file.readline().rstrip('\n')

        nn1 = 0
        for count in range(len(list2)):
            temp_list = list2[count].split()
            if temp_list[0] == name_change:
                temp_samename.append(list2[:].pop(count))
                list2_name_index.append(count)
            elif count == len(list2) - 1:
                if not temp_samename:
                    nn1 = 1
                    print('没有查找到对应学生')
        if nn1 == 1:    #没有查找的到对应学生回到管理页面
            continue
        count_1 = 0
        #相同姓名学生处理
        for index in temp_samename:
            temp_list_1 = index.split()
            print('%d、姓名:%s 年龄:%s 电话:%s' % (count_1,temp_list_1[0], temp_list_1[1], temp_list_1[2]))
            count_1 += 1
        n = input('请输入你要删除的学生信息(数字):')
        for index in range(len(temp_samename)):
            if n == str(index):   #删除指定编号的学生,查找原list2表对应元素进行删除
                list2.pop(list2_name_index[index])
                print('删除成功!')
                break
            elif index == len(temp_samename) - 1:
                if n != str(index):
                    print('输入错误!')
                    break
        #再把修改后的列表值写入文件
        student_file.close()
        student_file_2 = open(logon_name + '.txt','w')
        for i in list2:
            student_file_2.write(i+'\n')
        student_file_2.close()
        continue
    elif n == '5':   #退出
        exit('系统已退出...')
    else:    #输入不合法,提示重新输入
        print('输入错误,请按照提示输入!')
        while True:
            print('请选择:1(继续)、2(退出):')
            n = input('请输入数字:')
            if n == '1':    #输入合法性判断
                break
            elif n == '2':
                exit('退出系统...')
            else:    #输入错误,提示重新输入
                print('输入错误!请重新输入!')
                continue
        continue

你可能感兴趣的:(2018-08-31 Day10-作业(优化学生管理系统))