美文网首页
week2 学生管理系统 v2.0

week2 学生管理系统 v2.0

作者: 卅月 | 来源:发表于2018-07-29 18:37 被阅读0次

    1.较上一次更新内容:

    • 1.用户数据 (包括学生信息,用户账号信息) 现在可以存储在本地
    • 2.添加了教师 (用户) 的登录注册功能
    • 3.添加了用户权限控制

    2.数据结构:

    采用3个文件,分别储存不同的信息,类似于数据库的table.
    文件1: sno.json
    用于保存上一次学生的学号(方便下次添加学生时,学号的获取),不受删除的影响,
    尝试过将此项数据保存在stu.json里面. 加在每一个学生的信息里,每次添加一个学生, 所有的学生信息里这一项数据都同时改变, 但是不知道什么原因会有报错, 于是决定单独存为一个文件, 独立保存.

    [0,1,2,3,4]

    文件2:stu.json
    用于保存系统中所有的学生信息

    [
    {姓名, 学号, 年龄, 电话, 所属用户(是哪个用户添加的)}
    {........................同上.....................}
    {........................同上.....................}
    ]

    文件3:tea.json
    用于保存系统中所有用户(教师)的信息:

    [
    {账号1, 密码1}
    {账号2, 密码2}
    {....................}
    ]

    3.主程序文件:    index.py

    """__author__ = Sun Jiankang"""
    import apis
    
    
    def print_stu_info():
        """
        打印学生信息
        :return:
        """
        print('姓名:', all_student[i][key_stu_name], '年龄:', all_student[i][key_stu_age], '电话:', all_student[i][key_stu_tel],
              '学号:', all_student[i][key_stu_no])
    
    
    
    # 教师
    key_tea_account = 'tea_name'        # 用户账号(教师姓名)
    key_tea_passwd = 'passwd'           # 用户密码(教师密码)
    
    # 学生
    key_max_sno = 'max_sno'                 # 存放最后一个学生的学号
    key_stu_name = 'stu_name'           # 学生姓名
    key_stu_no = 'stu_no'               # 学生学号
    key_stu_tel = 'stu_tel'             # 学生电话
    key_stu_age = 'stu_age'             # 学生年龄
    key_tea_account = 'tea_name'        # 关联的教师姓名(用户账号)
    
    # max_sno = 0
    # sno = 0               # 学号基数
    all_teacher = []      # 定义一个空的列表保存教师信息,为了防止第一次操作文件添加数据的时候报错
    all_student = []      # 定义一个空的列表保存学生信息.同上
    
    while True:
        apis.show_first()
        opera = apis.user_input()
    
        # 退出
        if opera == 3:
            break
    
        # 注册
        elif opera == 1:
            while True:
                try:
                    all_teacher = apis.read_file('./files/tea.json')        # 先将用户信息提取出来
                except:
                    pass
                (account, passwd) = apis.show_reg()
                content = {key_tea_account: account, key_tea_passwd: passwd}
                flag = True
                for i in range(len(all_teacher)):                       # 遍历用户信息,如果有重复的,就不添加.
                    if all_teacher[i][key_tea_account] == account:
                        print('用户名已存在,请重新输入!')
                        flag = False
                        break
    
                if flag:                                                # 如果用户名没有重复,就添加到文件中.
                    all_teacher.append(content)
                    apis.write_file('./files/tea.json', all_teacher)
                    print('注册成功!')
                    print('         请登录')
                    print('1.注册', '2.登录', '3.退出', sep='\n')
                    apis.user_input()
                break
    
        # 登录
        elif opera == 2:
            all_teacher = apis.read_file('./files/tea.json')  # 先将用户信息提取出来
            # print(all_teacher)
            while True:
                (account, passwd) = apis.login()                  # 输入登录账号和密码
                login_flag = 0
                for tea_i in range(len(all_teacher)):                 # 遍历用户信息,如果账号和密码匹配成功,则登录成功
                    if all_teacher[tea_i][key_tea_account] == account:
                        if all_teacher[tea_i][key_tea_passwd] == passwd:
                            print('登录成功')
                            login_flag = 1              # 记录是否匹配成功(成功:1,失败:0)
                            break
                if login_flag:
                    break
                else:
                    print('用户不存在或密码错误请,重新登录')
                    continue
    
            # 登录成功后进入信息管理系统:
            while True:
                apis.show_system()
                opera = apis.user_input()
                if opera == 4:
                    break
    
                # 添加学生
                elif opera == 1:
                    max_snos = []
                    # temp_max_sno = 0
                    while True:
                        try:
                            all_student = apis.read_file('./files/stu.json')        # 先取出所有学生
                        except:
                            pass
                        (name, age, tel) = apis.insert_stu_info()               # 输入要添加的学生信息
                        max_snos = apis.read_file('./files/sno.json')               # 读取存放学号的文件
                        if len(max_snos) < 1:
                            max_sno = 1
                        else:
                            max_sno = max_snos[len(max_snos)-1] + 1                 # 获取上一次添加的学号,并对这次的学号加1
                        stu_no = 'py1805' + str(max_sno).rjust(3, '0')
                        max_snos.append(max_sno)
                        apis.write_file('./files/sno.json', max_snos)               # 保存当前学号,写入文件
    
                        # 将所有学生信息存入文件
                        content = {key_stu_name: name, key_stu_age: age, key_stu_tel: tel, key_stu_no: stu_no, key_tea_account: all_teacher[tea_i][key_tea_account]}
                        all_student.append(content)
                        apis.write_file('./files/stu.json', all_student)
    
                        apis.insert_success()               # 写入文件成功,弹窗选择继续添加或者返回上一层
                        if apis.user_input() == 1:
                            continue
                        else:
                            apis.show_system()
                            break
    
                # 查找学生
                elif opera == 2:
                    apis.show_search_stu()
                    opera = apis.user_input()
    
                    # 查看当前用户所属的所有学生信息
                    if opera == 1:
                        flag = 1
                        all_student = apis.read_file('./files/stu.json')  # 取出所有学生
                        for i in range(len(all_student)):
                            if all_student[i][key_tea_account] == all_teacher[tea_i][key_tea_account]:
                                print_stu_info()
                                flag = 0
                        if flag:
                            print('没有查询到学生!!!!')
    
                    # 按姓名查看学生
                    elif opera == 2:
                        flag = 1
                        all_student = apis.read_file('./files/stu.json')  # 取出所有学生
                        input_name = input('请输入要查找的学生姓名>>>')
                        for i in range(len(all_student)):                   # 遍历出姓名匹配的学生,并且还要满足条件:是本用户添加的学生
                            if all_student[i][key_tea_account] == all_teacher[tea_i][key_tea_account] and input_name == all_student[i][key_stu_name]:
                                print_stu_info()
                                flag = 0
                        if flag:
                            print('没有这个学生')
    
                    # 按学号查看学生
                    elif opera == 3:
                        all_student = apis.read_file('./files/stu.json')  # 取出所有学生
                        input_sno = input('请输入要查找的学生学号>>>')
                        for i in range(len(all_student)):
                            if input_sno == all_student[i][key_stu_no]:
                                print_stu_info()
    
                # 删除学生
                elif opera == 3:
                    all_student = apis.read_file('./files/stu.json')  # 取出所有学生
                    input_name = input('请输入要删除的学生姓名>>>')     # 查找出符合条件的学生
                    flag = 1
                    for i in range(len(all_student)):
                        if all_student[i][key_tea_account] == all_teacher[tea_i][key_tea_account] and input_name == all_student[i][key_stu_name]:
                            print_stu_info()
                            flag = 0
                    if flag:
                        print('没有这个学生')
                        continue
                    value = input('请输入要删除的学生学号>>')            # 根据学号删除学生
                    for i in range(len(all_student)):
                        if value == all_student[i][key_stu_no]:
                            del all_student[i]
                            break
                    apis.write_file('./files/stu.json', all_student)
                else:
                    print('333')
    
    
    
        else:
            print('输入错误,请重新输入!')
            apis.show_first()
    
    

    4.####接口文件:    apis.py

    """__author__ = Sun Jiankang"""
    import json
    
    def show_first():
        """
        系统初始界面
        :return:
        """
        print('----------------------------')
        print('|    欢迎进入本系统         |')
        print('----------------------------')
        print('         请登录')
        print('1.注册', '2.登录', '3.退出', sep='\n')
    
    
    def user_input():
        """
        用户输入数字选项,进行下一步操作
        :return: 返回选项编号
        """
        value = int(input('请选择要执行的操作>>>'))
        return value
    
    
    def write_file(file_name, content):
        """
        导入内容
        :param file_name:
        :param content:
        :return:
        """
        with open(file_name, 'w', encoding='utf-8') as f:
            json.dump(content, f)
    
    def read_file(filename):
        """
        读取文件内容
        :param filename:
        :param content:
        :return:
        """
        with open(filename, 'r', encoding='utf-8') as f:
            return json.load(f)
    
    def show_reg():
        """
        注册界面
        :return:
        """
        print('-----注册-----')
        account = input('请输入账号>>>:')
        passwd = input('请输入密码>>>')
        return account, passwd
    
    
    def login():
        """
        登录界面
        :return:
        """
        print('-----登录-----')
        account = input('请输入账号>>>:')
        passwd = input('请输入密码>>>')
        return account, passwd
    
    def show_system():
        """
        学生信息管理首页
        :return:
        """
        print('----------------------------')
        print('|    学生信息管理页面        |')
        print('----------------------------')
        print('1.添加学生', '2.查找学生', '3.删除学生', '4.退出', sep='\n')
    
    def insert_stu_info():
        """
        添加学生信息
        :return:
        """
        name = input('学生姓名>>>')
        age = input('年龄>>>')
        tel = input('电话>>>')
        return name, age, tel
    
    def show_search_stu():
        """
        查找学生界面
        :return:
        """
        print('-----查找学生-----')
        print('1.查看所有学生')
        print('2.按姓名查找')
        print('3.按学号查找')
        print('4.返回')
    
    
    def insert_success():
        """
        添加学生成功后打印后续选项
        :return:
        """
        print('添加成功!')
        print('1.继续添加')
        print('2.返回')
    
    
    
    
    if __name__ == '__main__':
        pass
    

    5.####运行效果:


    student_manager_system.gif

    相关文章

      网友评论

          本文标题:week2 学生管理系统 v2.0

          本文链接:https://www.haomeiwen.com/subject/fbktvftx.html