2019-07-30 学生信息管理系统

"""__author__ = fzzy"""
""" Create Time:  2019/8/6  17:35 """


import random
import datetime
import string

visitor = ''               # 登录账号,用于功能界面显示
id_info = {}               # 账号字典
stu_info = {}              # 学生字典
idpath = 'C:\\Users\\13155\Desktop\\id.txt'    # 账号信息存储文件路径
studentpath = ''         # 学生信息存储文件路径

# 将字典存入txt
def save_dict_to_file(dict, filepath):
    try:
        with open(filepath,'a') as  f:   # a:附加写方式打开,不可读
            for key in dict:
                f.write('%s:%s\n'%(key,dict[key]))
    except IOError as ioerr:
        print('文件%s无法创建'%filepath)

# 从txt中加载字典
def load_dict_from_file(dict,filepath):
    try:
        with open(filepath,'r') as f:
            for line in f:
                key, value = line.strip().split(':')
                dict[key] = value
    except IOError as ioerr:
        print('文件%s不存在' % filepath)


# 添加学生
def add_student():
    randomNum = random.randint(0, 100)      #学号等于当前日期转格式后加1~100的随机数的字符串
    nowTime = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
    stu_number = str(nowTime) + str(randomNum)
    name = input('\n请输入姓名:')            #输入
    stu_id = int(stu_number)
    age = int(input('请输入年龄:'))
    if age < 0:                              #输入检测
        print('\n输入错误!')
        age = int(input('请重新输入年龄:'))
        print('')
    sex = input('请输入性别:')
    while sex != '男' and sex != '女':
        print('\n输入错误!')
        sex = input('请重新输入性别:')
        print('')
    stu_class = input('请输入班级:')
    stu_info.clear()          #  清空列表,否则存入时会重复存入之前的值
    stu_info[name] = [stu_id, age, sex, stu_class]
    save_dict_to_file(stu_info, studentpath)
    load_dict_from_file(stu_info,studentpath)
    if name in stu_info:         # 检测是否成功添加
        print('\n添加成功!')
    else:
        print('\n添加失败!')
    print('\n1.继续添加')
    print('2.返回')
    selet = int(input('\n请选择:'))
    if selet == 1:
        add_student()
    elif selet == 2:
        function()
    else:
        print('\n输入错误!')
        selet = int(input('请重新选择:'))


# 查看学生
def check_student():
    load_dict_from_file(stu_info,studentpath)
    print('=================学生列表======================')
    for dict in stu_info:
        str1  = stu_info[dict].replace('[','').replace(']','')  # 由于字典的值本来是列表,但存入是以字符串形式
        list1 = str1.split(',')  #以,为间隔符字符串转列表        #存入的,导出时为了分开,需要把[ 和 ]去掉
        print('姓名:',dict)
        print('学号:',eval(list1[0]))
        print('年龄:',eval(list1[1]))
        print('性别:',eval(list1[2]))
        print('班级:',eval(list1[3]))
        print('')

    print('=============================================')
    print('1.返回')
    selet = int(input('\n请选择:'))
    if selet == 1:
        function()
    else:
        print('\n输入错误!')
        selet = int(input('请重新选择:'))

# 修改学生信息
def updata_student():
    load_dict_from_file(stu_info,studentpath)
    name = input('\n请输入要更新信息的学生姓名:')      #修改信息
    if name not in stu_info:
        print('该学生不存在,请重新确认!\n')
        updata_student()
    else:
        stu_id = int(input('请输入学号:'))
        age =int(input('请输入年龄:'))
        if age < 0:
            print('\n输入错误!')
            age = int(input('请重新输入年龄:'))
            print('')
        sex = input('请输入性别:')
        while sex != '男' and sex != '女':
            print('\n输入错误!')
            sex = input('请重新输入性别:')
            print('')
        stu_class = input('请输入班级:')
        stu_info[name] = [stu_id ,age, sex, stu_class]
        f = open(studentpath,'r+')       # r+读写,不创建
        f.truncate()                     # 清空txt文件,否则会出现重复数据
        save_dict_to_file(stu_info,studentpath)
        load_dict_from_file(stu_info,studentpath)
        print(stu_info[name])
        if stu_info[name] == str([stu_id, age, sex, stu_class]):  # 检测是否修改成功
            print('\n修改成功!')
        else:
            print('\n修改失败!')
        print('\n1.继续修改')
        print('2.返回')
        selet = int(input('\n请选择:'))
        if selet == 1:
            updata_student()
        elif selet == 2:
            function()
        else:
            print('\n输入错误!')
            selet = int(input('请重新选择:'))

# 删除学生
def del_student():
    load_dict_from_file(stu_info,studentpath)
    name = input('\n请输入要删除的学生姓名:')
    if name not in stu_info:
        print('该学生不存在,请重新确认!\n')
        del_student()
    else:
        stu_info.pop(name)
        f = open(studentpath,'r+')
        f.truncate()
        save_dict_to_file(stu_info,studentpath)
        load_dict_from_file(stu_info,studentpath)
        if name not in stu_info:       # 检测是否删除成功
            print('\n删除成功!')
        else:
            print('\n删除失败!')
        print('\n1.继续删除')
        print('2.返回')
        selet = int(input('\n请选择:'))
        if selet == 1:
            del_student()
        elif selet == 2:
            function()
        else:
            print('\n输入错误!')
            selet = int(input('请重新选择:'))

# 返回注册登录界面
def return_main():
    print('\n\n')
    main_window()

# 功能界面
def function():
    print('\n================================')
    print('🌺🌺🌺欢迎%s🌺🌺🌺\n'%visitor)
    print('◆1.添加学生')
    print('◆2.查看学生')
    print('◆3.修改学生信息')
    print('◆4.删除学生')
    print('◆5.返回')
    choice = int(input('\n请选择:'))         # 根据输入选择功能
    if choice == 1:
        add_student()
    elif choice == 2:
        check_student()
    elif choice == 3:
        updata_student()
    elif choice == 4:
        del_student()
    elif choice == 5:
        return_main()


# 注册界面
def res_window():
    print('')
    user_id = input('请输入您要创建的账号:')
    while len(user_id) < 3 or len(user_id) > 6:
        print('\n您应该创建一个3~6位的账号!')
        user_id = input('请输入您要创建的账号:')
    load_dict_from_file(id_info,idpath)
    if user_id in id_info:                         # 检测账号是否存在
        print('该账号已经存在,请重新输入!')
        res_window()
    else:
        password = input('请输入您的密码:')
        if len(password) < 6:                    # 检测密码长度是否大于6位
            print('\n密码长度最少为6位!')
            password = input('请重新设计您的密码:')
        confirm_password = input('确认您的密码:')
        while password != confirm_password:
            print('\n两次输入的密码不一致,请重新输入!\n')     # 检测两次输入的密码是否一样
            password = input('请输入id为%s的密码:'%user_id)
            if len(password) < 6:
                print('\n密码长度最少为6位!')
                password = input('请重新设计您的密码:')
            confirm_password = input('确认您的密码:')
        id_info.clear()
        id_info[user_id] = password
        save_dict_to_file(id_info, idpath)
        load_dict_from_file(id_info,idpath)
        if user_id in id_info:               #检测是否创建成功
            print('\n创建成功!')
        else:
            print('\n创建失败!')
        main_window()

# 登录界面
def sign_window():
    load_dict_from_file(id_info,idpath)
    user_id1 = input('\n请输入账号:')
    while user_id1 not in id_info:
        print('您输入的账号不存在!\n')
        user_id1 = input('请重新输入账号:')
    password1 = input('请输入密码:')
    while password1 != id_info[user_id1]:
        print('您输入的密码不正确!\n')
        password1 = input('请重新输入密码:')
    print('登录成功!')
    global visitor
    visitor = user_id1           # 将登陆账号赋给变量,在功能界面输出
    global studentpath
    studentpath =  'C:\\Users\\13155\Desktop\\record\\'+ visitor +'.txt'
    function()

# 主界面
def main_window():
    print( '=============学生信息管理系统=============')
    print('◆ 1.注册')
    print('◆ 2.登录')
    choice = int(input('\n请选择:(1 - 2):'))
    if choice == 1:
        res_window()
    elif choice == 2:
        sign_window()
    else:
        print('\n输入错误,请重新输入!')
        print('=====================================')
        choice = choice = int(input('请选择:(1 - 2):'))

# 开始
main_window()




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容