美文网首页
Python基础总结14-学生管理系统version0.2

Python基础总结14-学生管理系统version0.2

作者: zxhlcl | 来源:发表于2018-10-16 22:41 被阅读0次

mian_page.py

import modules.file_manager as FM
import modules.student_manager as SM
def register():
    '''注册'''
    #账号控制
    while True:
        #1、输入账号
        user_name=input("请输入账号(3-6位):")
        #2、检查账号
        if not 3<=len(user_name)<=6:
            print("账号有误,请重新输入")
            continue
        else:
            break
    #密码控制
    while True:
        #3、输入密码
        user_password = input("请输入密码(6-12位):")
        #4、检查密码
        if not 6<=len(user_password)<=12:
            print("密码有误,请重新输入")
            continue
        else:
            break
    #检查账号是否被注册
    #1、获取账号信息
    all_user = FM.json_read("all_user.json")
    #2、判断账号是否存在
    if user_name in all_user:
        print("该账号已经被注册")
        return
    #3、账号可用,添加账号并写入文件
    all_user[user_name]=user_password
    re=FM.json_write('all_user.json',all_user)
    if re :print("注册成功")
    else:print("注册失败")

def login():
    # 1.输入账号和密码
    user_name = input('请输入账号:')
    pass_word = input('请输入密码:')
    # 2.检测账号是否已经存在过
       # 获取系统所有的用户
    all_user = FM.json_read('all_user.json')
       # 判断账号是否存在
    if user_name not in all_user:
        print('登陆失败!账号不存在!')
        return
        # 账号存在就先通过账号去获取正确的密码
    pass_word_old = all_user[user_name]
    if pass_word == pass_word_old:
        print('登陆成功!')
        # 登陆成功后要做什么,写在这儿
        SM.show_student_manager_page(user_name)
    else:
        print('登陆失败!密码错误!')


def show_main_page():
   while True:
       print(FM.text_read("mian_page.txt"))
       num=input("请选择(1-3):")
       if num=="1":
           login()
       elif num=="2":
           register()
       elif num=="3":
           print("3")
       else:
           print("错误")


if __name__=="__main__" :
    show_main_page()

file_manager.py

import  json
#普通文件读操作
def text_read(file_name):
    '''
    普通文件读操作函数
    :param file_name: 传入文件
    :return:返回文件内容
    '''
    try:
        with open('./files/'+file_name,"r",encoding="utf-8") as f :
            return f.read()
    except FileNotFoundError:
        print("{}文件不存在".format(file_name))
        return  None
#普通文件写操作
def text_write(file_name,content):
    '''
    普通文件写操作函数
    :param content:  写入到文件中的内容
    :param file_name: 写入的文件名
    :return: True
    '''
    try:
        with open("./files/"+file_name,"w",encoding="utf-8") as f:
            f.write(content)
            return True
    except:
        return False
#json文件读操作
def json_read(file_name):
    '''
    JSON文件读操作函数
    :param file_name:文件名
    :return: 文件内容
    '''
    try:
        with open('./files/'+file_name,"r",encoding="utf-8") as f:
            return json.load(f)
    except FileNotFoundError:
        print("{}文件不存在".format(file_name))
        return None
#Json文件写操作
def json_write(file_name,content):
    '''
    JSON文件写操作函数
    :param content: 写入的内容
    :param file_name: 文件名
    :return:
    '''
    try:
        with open("./files/"+file_name,'w',encoding="utf-8") as f:
            json.dump(content,f)
            return True
    except:
         return False

if __name__=="__main__":
    pass

student_manager.py

import modules.file_manager as FM
'''
1、账号与账号管理的学生一一对应
2、一个账号管理多个学生
3、一个学生存储多个信息(每个学生的信息一样)

方案一:整个管理系统所有的账号管理的学生放到一起
{  
   账号1:[学生1,学生2],
   账号2:[学生1,学生2]
}
将大字典写到一个json文件中
方案二:
一个账号对应一个Json文件,每个json文件就是一个列表;
json文件名与账号名一一对应

user1.json:
{   
    count:nums,#当前系统已经添加的学生数目
    all_student:[{001},{002},{003}, ,{004}]
}
user2.json:
{   
    count:nums,#当前系统已经添加的学生数目
    all_student:[{001},{002},{003}]
}
'''
#通过全局变量保存当前用户
current_user=''
#通过全局变量保存常用的Key
key_count="count"
key_all_students="all_student"
key_name='name'
key_age="age"
key_tel="tel"
key_id="id"

#获取当前账号对应的JSON文件
def get_current_userinfo():
    content=FM.json_read(current_user+".json")
    if not content:
        content={}
    return content

def add_student():
    #0、读取当前用户数据
    user_info=get_current_userinfo()
    while True:
        #1、添加学生信息
        name=input("请输入学生的姓名:")
        age=input("请输入学生的年龄:")
        tel = input("请输入学生的电话:")
        #2、产生学号--> 001,002,003...
        number= user_info.get(key_count,0) #key_count不存在的时候给一个默认值0
        number+=1
        stu_id='ID'+str(number).rjust(3,'0')
        #3、创建学生
        stu={key_id:stu_id,key_name:name,key_age:age,key_tel:tel}
        #4、添加学生
        all_students=user_info.get(key_all_students,[])#获取学生,若没有学生设置一个空列表
        all_students.append(stu)
        #5、数据更新到文件
        user_info[key_count]=number
        user_info[key_all_students]=all_students
        re=FM.json_write(current_user+".json",user_info)
        if re:
            print("添加成功!")
        else:
            print("添加失败!")
        print("1、继续\n2、返回",sep="")
        value=input("请选择(1-2):")
        if value=="1":
            continue
        else:
            return
def show_student_info(stu):
    print("学号:%s 姓名:%s 年龄:%s 电话:%s"\
          % (stu[key_id],stu[key_name],stu[key_age],stu[key_tel]))

def find_student_with_name(name,all_student):
    find_student=[]
    for stu in all_student:
        if stu[key_name]==name:
            find_student.append(stu)
    return find_student

def find_student_with_id(id,all_students):
    for stu in all_students:
        if stu[key_id]==id:
            return stu
    return None

def find_student():
    #1、拿到所有的学生
    user_info=get_current_userinfo()
    all_students=user_info.get(key_all_students,None)
    if not all_students:
        print("当前账号没有可管理的学生!")
        return
    while True:
        print("1、查看所有学生\n2、按姓名查找\n3、按学号查找\n4、返回",sep='')
        value=input("请选择(1-4):")
        if value=="1":
            for stu in all_students:
                show_student_info(stu)
        elif value=='2':
            name=input("请输入姓名:")
            student=find_student_with_name(name,all_students)
            if  student:
                for stu in student:
                    show_student_info(stu)
            else:
                print("没有找到学生%s!"% name)
        elif value=='3':
            stu_id=input("请输入学号:")
            student=find_student_with_id(stu_id, all_students)
            if student:
                show_student_info(student)
            else:
                print("没有找到学号为%s的学生" % stu_id)
        elif value=="4":
            return
        else:
            print("输入错误,请重新选择")
            continue

def delete_student():
    #1、拿到所有的学生
    user_info = get_current_userinfo()
    all_students = user_info.get(key_all_students, None)
    if not all_students:
        print("当前账号没有可管理的学生!")
        return
    #2、给出选择
    while True:
        print('1、按姓名删除\n2、按学号删除\n3、返回')
        value=input("请选择(1-3):")
        if value=="1":
            name=input("请输入学生姓名:")
            students=find_student_with_name(name,all_students)
            if students:
                #打印出找到的学生信息
                index=0
                for stu in students:
                    print(index,end="")
                    show_student_info(stu)
                    index+=1
                #选择要进行的操作
                print("1、继续删除\n2、返回",sep="")
                value=input("请选择(1-2):")
                if value=="1":
                    del_index=input("请输入删除学生的编号:")
                    #找到要删除的学生对应的字典,并删除数据
                    del_stu=students[int(del_index)]
                    all_students.remove(del_stu)
                    #将本地数据更新
                    re=FM.json_write(current_user+'.json',user_info)
                    if re:
                        print("删除成功")
                    else:
                        print("删除失败")
                elif value=="2":
                    continue
            else:
                print("没有该学生!")
                continue
        elif value=="2":
            stu_id = input("请输入学生学号:")
            del_stu = find_student_with_id(stu_id, all_students)
            if del_stu:
                show_student_info(del_stu)
                value=input("请确定是否要删除?(Y/N)")
                if value=="Y":
                    all_students.remove(del_stu)
                elif value=="N":
                    continue
                re=FM.json_write(current_user+'.json',user_info)
                if re:
                    print("删除成功")
                else:
                    print("删除失败")
            else:
                print("没有该学生")
                continue
        elif value=="3":
            return
        else:
            print("选择有误,请重新选择")
            continue


def show_student_manager_page(user_name):
    #1、获取当前用户
    global current_user
    current_user=user_name
    while True:
        #2、显示页面
        content=FM.text_read('manager_page.txt')
        print(content % user_name)
        #3、选择
        value=input(">>>")
        if value=="1":
            add_student()
        elif value=="2":
            find_student()
        elif value=="3":
            pass
        elif value=="4":
            delete_student()
        elif value=="5":
            pass
        else:
            print("输入有误")

manager_page.txt

=================================
欢迎%s:
      1、添加学生
      2、查看学生
      3、修改学生信息
      4、删除学生
      5、退出
==================================

mian_page.txt

===================================
        ❀欢迎来到学生管理系统❀
             1、登  录
             2、注  册
             3、退  出
===================================

相关文章

网友评论

      本文标题:Python基础总结14-学生管理系统version0.2

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