student Information Administration System(逻辑基本完整,功能缺省)

代码

# -*- coding: utf-8 -*-
# @Time    : 2018/7/23 16:19
# @Author  : G.Hope
# @Email   : 1638327522@qq.com
# @File    : studentInformation.py
# @Software: PyCharm
# 登录功能实现依赖的数据
teacher_id = 'py01'
teacher_pwd = 'root'
student_id = 'py180501'
student_pwd = '666'
# 系统已经录入的学生信息
student_information = [{'class': 'py1805', 'schoolNumber': '180501', 'name': 'Tom', 'sex': '男', 'age': '18',
                        'score': [{'English': 78, 'Math': 96, 'C语言': 85, '国学基础': 100}]},
                       {'class': 'py1805', 'schoolNumber': '180502', 'name': 'Lucy', 'sex': '男', 'age': '19',
                        'score': [{'English': 98, 'Math': 66, 'C语言': 55, '国学基础': 80}]}]

print('\t欢迎使用学生信息管理系统!')
print('\t1、教师登录\n\t2、学生登录\n\t3、退出系统')
control_login = int(input('请根据提示信息选择你想要进行的操作'))


# 教师口令验证
def teacher_login():
    id = input('请输入你的工号:')
    pwd = input('请输入你的密码:')
    if id == teacher_id and pwd == teacher_pwd:
        print('你已成功登录该系统!\n请根据提示选择操作')
        print('\t1、查看学生信息')
        print('\t2、添加学生信息')
        print('\t3、修改学生信息')
        print('\t4、删除学生信息')
        print('\t5、退出登录')  # 基本逻辑,不涉及教师信息
    elif id == teacher_id:
        print('你输入的密码存在错误,请重新输入!!!')
        teacher_login()
    elif pwd == teacher_pwd:
        print('你输入的工号存在错误,请重新输入!!!')
        teacher_login()
    else:
        print('假的吧你,系统拒绝你的访问QAQ')
        teacher_end()


def teacher_end():
    print('此功能尚为完善!')


# 教师每次完成一个功能需要返回的主界面
def teacher_main():
    print('\t请根据提示选择操作')
    print('\t1、查看学生信息')
    print('\t2、添加学生信息')
    print('\t3、修改学生信息')
    print('\t4、删除学生信息')
    print('\t5、退出登录')


# 查询信息模块
def teacher_find():
    print('请根据提示选择需要进行的操作:')
    print('\t1、查看全部学生基本信息')
    print('\t2、查看指定学生基本信息')
    print('\t3、查看全部学生成绩信息')
    print('\t4、查看指定学生成绩信息')
    print('\t5、返回上层目录')
    control_teacher_find_administration = int(input('请输入你的选择:'))
    if control_teacher_find_administration == 1:  # 遍历学生信息
        for x in student_information:
            for key in x:
                print(key, x[key])
    if control_teacher_find_administration == 2:  # 输出指定学生信息
        key_score = int(input('请输入你所想要查看学生的部分信息:'))
        print(student_information[key_score])
    if control_teacher_find_administration == 3:  # 遍历学生成绩
        for x in student_information:
            print(x['score'])
    if control_teacher_find_administration == 4:  # 输出指定学生成绩
        key_score = int(input('请输入你所想要查看学生的部分信息:'))
        dream_student = student_information[key_score]
        score = dream_student['score']  # 列表的取值无法通过内容获取
        print(score)
        sum = 0
        count = 0
        for x in score:
            for key in x:
                sum += int(x[key])
                count += 1
        average_score = sum / count
        print('该生的总成绩为%d,平均成绩为%.2f' % (sum, average_score))
    if control_teacher_find_administration == 5:
        print('返回上层目录!!!')


def teacher_add():
    dict = {}
    score = {}
    class1 = input('请输入班级:')  # class是关键字,无法作为标识符(变量名)
    schoolNumber = input('请输入学号:')
    name = input('请输入姓名:')
    sex = input('请输入性别:')
    age = input('请输入年龄:')
    score_english = input('请输入英语成绩:')
    score_math = input('请输入数学成绩:')
    score_c = input('请输入C语言成绩:')
    score_chinese_base = input('请输入国学基础成绩:')
    dict['class'] = class1
    dict['schoolNumber'] = schoolNumber
    dict['name'] = name
    dict['sex'] = sex
    dict['age'] = age
    score['English'] = score_english
    score['Math'] = score_math
    score['C语言'] = score_c
    score['国学基础'] = score_chinese_base
    dict['score'] = score
    student_information.append(dict)
    print('添加成功!!!')


def teacher_updata():
    for x in student_information:
        for key in x:
            print(key, x[key])
    index = int(input('请输入你想要修改学生的序号(按输出顺序排序):'))
    dict = {}
    score = {}
    class1 = input('请输入班级:')  # class是关键字,无法作为标识符(变量名)
    schoolNumber = input('请输入学号:')
    name = input('请输入姓名:')
    sex = input('请输入性别:')
    age = input('请输入年龄:')
    score_english = input('请输入英语成绩:')
    score_math = input('请输入数学成绩:')
    score_c = input('请输入C语言成绩:')
    score_chinese_base = input('请输入国学基础成绩:')
    dict['class'] = class1
    dict['schoolNumber'] = schoolNumber
    dict['name'] = name
    dict['sex'] = sex
    dict['age'] = age
    score['English'] = score_english
    score['Math'] = score_math
    score['C语言'] = score_c
    score['国学基础'] = score_chinese_base
    dict['score'] = score
    student_information[index].update(
        dict)  # 代码复用,用到的是teacher中添加信息的,只有最后两行是写的,不过缺点就是这样修改很麻烦,相当于重新录入一样。无法实现指定修改字典中某项元素,主要看逻辑吧!
    print('修改成功!!!')


def teacher_del():
    for x in student_information:
        for key in x:
            print(key, x[key])
    index = int(input('请输入你想要删除学生的序号(按输出顺序排序):'))
    del student_information[index]
    print('已完成删除!!!')


def student_login():
    id = input('请输入你的学号:')
    pwd = input('请输入你的密码:')
    if id == student_id and pwd == student_pwd:
        print('你已成功登录该系统!\n请根据提示选择操作')
        print('\t1、查看成绩信息')
        print('\t2、查看所有信息')
        print('\t3、编辑已有信息')
        print('\t4、退出登录')  # 基本逻辑,不涉及教师信息
    elif id == student_id:
        print('你输入的密码存在错误,请重新输入!!!')
        student_login()
    elif pwd == student_pwd:
        print('你输入的学号存在错误,请重新输入!!!')
        student_login()
    else:
        print('假的吧你,系统拒绝你的访问QAQ')


def student_main():
    print('\t1、查看成绩信息')
    print('\t2、查看所有信息')
    print('\t3、编辑已有信息')
    print('\t4、退出登录')


def student_find_all():
    dream_student = student_information[0]
    print(dream_student['score'])


def student_find_score():
    print(student_information[0])


def student_updata():
    dict = {}
    score = {}
    class1 = input('请输入班级:')  # class是关键字,无法作为标识符(变量名)
    schoolNumber = input('请输入学号:')
    name = input('请输入姓名:')
    sex = input('请输入性别:')
    age = input('请输入年龄:')
    score_english = input('请输入英语成绩:')
    score_math = input('请输入数学成绩:')
    score_c = input('请输入C语言成绩:')
    score_chinese_base = input('请输入国学基础成绩:')
    dict['class'] = class1
    dict['schoolNumber'] = schoolNumber
    dict['name'] = name
    dict['sex'] = sex
    dict['age'] = age
    score['English'] = score_english
    score['Math'] = score_math
    score['C语言'] = score_c
    score['国学基础'] = score_chinese_base
    dict['score'] = score
    student_information[0].update(
        dict)  # 代码复用,用到的是teacher中添加信息的,只有最后两行是写的,不过缺点就是这样修改很麻烦,相当于重新录入一样。无法实现指定修改字典中某项元素,主要看逻辑吧!
    print('修改成功!!!')


while True:
    if control_login == 1:
        teacher_login()
        control_teacher_administration = int(input('\t请输入你的选择:'))
        while True:
            if control_teacher_administration == 1:
                teacher_find()
                teacher_main()
                control_teacher_administration = int(input('\t请输入你的选择:'))
            elif control_teacher_administration == 2:
                teacher_add()
                teacher_main()
                control_teacher_administration = int(input('\t请输入你的选择:'))
            elif control_teacher_administration == 3:
                teacher_updata()
                teacher_main()
                control_teacher_administration = int(input('\t请输入你的选择:'))
            elif control_teacher_administration == 4:
                teacher_del()
                teacher_main()
                control_teacher_administration = int(input('\t请输入你的选择:'))
            elif control_teacher_administration == 5:
                print('你已退出系统!!!')
                break
        break
    if control_login == 2:
        student_login()
        control_student_administration = int(input('\t请输入你的选择:'))
        while True:
            if control_student_administration == 1:
                student_find_all()
                student_main()
                control_student_administration = int(input('\t请输入你的选择:'))
            elif control_student_administration == 2:
                student_find_score()
                student_main()
                control_student_administration = int(input('\t请输入你的选择:'))
            elif control_student_administration == 3:
                student_updata()
                student_main()
                control_student_administration = int(input('\t请输入你的选择:'))
            elif control_student_administration == 4:
                print('你已退出系统!!!')
                break
        break
    if control_login == 3:
        print('你已退出系统!!!')
        break

教师功能验证

E:\Python--培训\day06\dict\venv\Scripts\python.exe E:/Python--培训/day06/dict/homeWork/studentInformation.py
    欢迎使用学生信息管理系统!
    1、教师登录
    2、学生登录
    3、退出系统
请根据提示信息选择你想要进行的操作1
请输入你的工号:p
请输入你的密码:root
你输入的工号存在错误,请重新输入!!!
请输入你的工号:py01
请输入你的密码:23
你输入的密码存在错误,请重新输入!!!
请输入你的工号:py01
请输入你的密码:root
你已成功登录该系统!
请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:1
请根据提示选择需要进行的操作:
    1、查看全部学生基本信息
    2、查看指定学生基本信息
    3、查看全部学生成绩信息
    4、查看指定学生成绩信息
    5、返回上层目录
请输入你的选择:1
class py1805
schoolNumber 180501
name Tom
sex 男
age 18
score [{'English': 78, 'Math': 96, 'C语言': 85, '国学基础': 100}]
class py1805
schoolNumber 180502
name Lucy
sex 男
age 19
score [{'English': 98, 'Math': 66, 'C语言': 55, '国学基础': 80}]
    请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:1
请根据提示选择需要进行的操作:
    1、查看全部学生基本信息
    2、查看指定学生基本信息
    3、查看全部学生成绩信息
    4、查看指定学生成绩信息
    5、返回上层目录
请输入你的选择:2
请输入你所想要查看学生的部分信息:1
{'class': 'py1805', 'schoolNumber': '180502', 'name': 'Lucy', 'sex': '男', 'age': '19', 'score': [{'English': 98, 'Math': 66, 'C语言': 55, '国学基础': 80}]}
    请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:1
请根据提示选择需要进行的操作:
    1、查看全部学生基本信息
    2、查看指定学生基本信息
    3、查看全部学生成绩信息
    4、查看指定学生成绩信息
    5、返回上层目录
请输入你的选择:3
[{'English': 78, 'Math': 96, 'C语言': 85, '国学基础': 100}]
[{'English': 98, 'Math': 66, 'C语言': 55, '国学基础': 80}]
    请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:1
请根据提示选择需要进行的操作:
    1、查看全部学生基本信息
    2、查看指定学生基本信息
    3、查看全部学生成绩信息
    4、查看指定学生成绩信息
    5、返回上层目录
请输入你的选择:4
请输入你所想要查看学生的部分信息:1
[{'English': 98, 'Math': 66, 'C语言': 55, '国学基础': 80}]
该生的总成绩为299,平均成绩为74.75
    请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:1
请根据提示选择需要进行的操作:
    1、查看全部学生基本信息
    2、查看指定学生基本信息
    3、查看全部学生成绩信息
    4、查看指定学生成绩信息
    5、返回上层目录
请输入你的选择:5
返回上层目录!!!
    请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:2
请输入班级:py
请输入学号:1805
请输入姓名:A
请输入性别:男
请输入年龄:22
请输入英语成绩:99
请输入数学成绩:67
请输入C语言成绩:56
请输入国学基础成绩:87
添加成功!!!
    请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:3
class py1805
schoolNumber 180501
name Tom
sex 男
age 18
score [{'English': 78, 'Math': 96, 'C语言': 85, '国学基础': 100}]
class py1805
schoolNumber 180502
name Lucy
sex 男
age 19
score [{'English': 98, 'Math': 66, 'C语言': 55, '国学基础': 80}]
class py
schoolNumber 1805
name A
sex 男
age 22
score {'English': '99', 'Math': '67', 'C语言': '56', '国学基础': '87'}
请输入你想要修改学生的序号(按输出顺序排序):2
请输入班级:py1805
请输入学号:180503
请输入姓名:Alixic
请输入性别:男
请输入年龄:22
请输入英语成绩:99
请输入数学成绩:68
请输入C语言成绩:100
请输入国学基础成绩:22
修改成功!!!
    请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:4
class py1805
schoolNumber 180501
name Tom
sex 男
age 18
score [{'English': 78, 'Math': 96, 'C语言': 85, '国学基础': 100}]
class py1805
schoolNumber 180502
name Lucy
sex 男
age 19
score [{'English': 98, 'Math': 66, 'C语言': 55, '国学基础': 80}]
class py1805
schoolNumber 180503
name Alixic
sex 男
age 22
score {'English': '99', 'Math': '68', 'C语言': '100', '国学基础': '22'}
请输入你想要删除学生的序号(按输出顺序排序):2
已完成删除!!!
    请根据提示选择操作
    1、查看学生信息
    2、添加学生信息
    3、修改学生信息
    4、删除学生信息
    5、退出登录
    请输入你的选择:5
你已退出系统!!!

Process finished with exit code 0

学生功能验证

E:\Python--培训\day06\dict\venv\Scripts\python.exe E:/Python--培训/day06/dict/homeWork/studentInformation.py
    欢迎使用学生信息管理系统!
    1、教师登录
    2、学生登录
    3、退出系统
请根据提示信息选择你想要进行的操作2
请输入你的学号:py180501
请输入你的密码:6
你输入的密码存在错误,请重新输入!!!
请输入你的学号:p
请输入你的密码:666
你输入的学号存在错误,请重新输入!!!
请输入你的学号:py180501
请输入你的密码:666
你已成功登录该系统!
请根据提示选择操作
    1、查看成绩信息
    2、查看所有信息
    3、编辑已有信息
    4、退出登录
    请输入你的选择:1
[{'English': 78, 'Math': 96, 'C语言': 85, '国学基础': 100}]
    1、查看成绩信息
    2、查看所有信息
    3、编辑已有信息
    4、退出登录
    请输入你的选择:2
{'class': 'py1805', 'schoolNumber': '180501', 'name': 'Tom', 'sex': '男', 'age': '18', 'score': [{'English': 78, 'Math': 96, 'C语言': 85, '国学基础': 100}]}
    1、查看成绩信息
    2、查看所有信息
    3、编辑已有信息
    4、退出登录
    请输入你的选择:3
请输入班级:py1804
请输入学号:1805001
请输入姓名:GHope
请输入性别:男
请输入年龄:22
请输入英语成绩:100
请输入数学成绩:100
请输入C语言成绩:100
请输入国学基础成绩:100
修改成功!!!
    1、查看成绩信息
    2、查看所有信息
    3、编辑已有信息
    4、退出登录
    请输入你的选择:1
{'English': '100', 'Math': '100', 'C语言': '100', '国学基础': '100'}
    1、查看成绩信息
    2、查看所有信息
    3、编辑已有信息
    4、退出登录
    请输入你的选择:2
{'class': 'py1804', 'schoolNumber': '1805001', 'name': 'GHope', 'sex': '男', 'age': '22', 'score': {'English': '100', 'Math': '100', 'C语言': '100', '国学基础': '100'}}
    1、查看成绩信息
    2、查看所有信息
    3、编辑已有信息
    4、退出登录
    请输入你的选择:4
你已退出系统!!!

Process finished with exit code 0

登录界面退出验证

E:\Python--培训\day06\dict\venv\Scripts\python.exe E:/Python--培训/day06/dict/homeWork/studentInformation.py
    欢迎使用学生信息管理系统!
    1、教师登录
    2、学生登录
    3、退出系统
请根据提示信息选择你想要进行的操作3
你已退出系统!!!

Process finished with exit code 0

通过一个小程序的逻辑进一步熟悉对列表和字典的操作。比较烦人的是逻辑感觉不是很清晰,感觉每次添加一个函数的时候运行总会出现一些并不想看到的运行结果。就改过来改过去的,差不多写完了才把基本逻辑理清楚。对于列表的操作我觉得就是对索引的寻找,字典就是以key代替了列表中的索引的无序列表,而且二者的嵌套,遍历操作什么的必须对基础很了解才不会出错。比如:for x in student_information ,其中的x就是列表中的第一项,也就是第一个字典集。一开始不晓得怎么把它和下标联系到一起了,导致无法遍历。还有就是主函数什么的,函数的执行顺序之类的也不清楚。这个小系统最大的缺点就是,当你密码和学号都错的时候就进去了。除了一开始缺少一组提示信息外,和成功登录的并没有什么区别。这算是最大的一个bug,等到学完函数了再回来调好它吧!

    原文作者:GHope
    原文地址: https://www.jianshu.com/p/a8a09d4a40b1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞