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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容