美文网首页
学生信息管理系统3.0

学生信息管理系统3.0

作者: 葡萄柚子茶 | 来源:发表于2018-09-05 20:44 被阅读0次

一.登录注册界面

#用户注册登录的信息需要保存到本地,可以用列表保存多个用户的数据,每个用户的数据用字典进行保存,格式如下:
#[{'user_name':'用户名1','password':'密码1'},
#{'user_name':'用户名2','password':'密码2'},
#......]

#导入登录注册界面后学生信息管理系统的模块
import student_system
#导入文件操作相关的功能
import file_manager
#声明全局变量
key_user_name='user_name'
key_password='password'
#显示登录界面(主界面)
show_main_page()

#====================主页
def show_main_page():
    while True:
        print(file_manager.read_text_file('login.txt'))#将主界面放在txt文档里,方便以后修改
        value = input('请选择(1-3):')
        #1.退出
        if value == '3':
            break
        #2.注册
        elif value =='2':
            register()
        elif value == '1':
            #print('登录')
            user_name=login()
            if user_name:
                #如果登录成功就进入管理系统
                student_system.user_name=user_name
                student_system.main_page()
        else:
            print('输入有误,请重新选择')
#====================注册
def register():

    #输入用户名
    while True:
        #1.输入用户名
        user_name = input('请输入一个用户名(3-10位):')
        #判断是否符合格式要求
        if not 3<=len(user_name)<=10:
            print('输入有误,请重新输入!')
            continue
        #判断是否已经注册过
        if is_register(user_name):
            print('%s已经注册过,请重新输入!'%user_name)
            continue
        print('用户名可用!')
        break

        #2.输入密码:
    while True:
        password=input("请输入密码(6-16位):")
        if not 6 <= len(password) <= 16:
            print('密码输入有误,请重新输入!')
            continue
        re_password = input('确认密码:')
        if password != re_password:
            print('和第一次输入的密码不一样,请重新输入')
            continue#从头开始
        break
    #3.保存用户名和密码
    all_user = get_all_user()
    all_user.append({key_user_name:user_name,key_password:password})
    re=file_manager.write_json_file(file_name,all_user)
    if re:
        print('注册成功')
    else:
        print('注册失败')
#====================获取所有的用户
def get_all_user():

    all_user = file_manager.read_json_file(file_name)
    if all_user:
        return all_user
    return []
#====================判断指定用户名是否已经注册过
def is_register(user_name):

    all_user = file_manager.read_json_file(file_name)
    if not all_user:#不存在
        return  False
    for user in all_user:
        if user[key_user_name]==user_name:
            return  True
    return  False

二.学生信息管理界面

"""
一个账号对应管理不同的学生---不同的用户对应不同的json文件
json文件中的格式:
{
    'name':'',
    'number':个数,
  'all_students':[
        {'name':,'age':,'tel':,'id':}
  ]

}
"""
import file_manager
user_name=''
key_number = 'number'
key_all_students='all_students'
key_name='name'
key_age='age'
key_tel='tel'
key_id='id'
#================主页
def main_page():
    while True:
        print(file_manager.read_text_file('system.txt'))#同样,可以把界面放在txt文件中,方便修改
        value = input('请选择(1-5):')

        #返回
        if value=='5':
            break
        elif value=='1':
            add_student()
        elif value=='2':
            find_student()
        elif value=='3':
            delete_student()

        elif value=='4':
            revise_student()

        else:
            print('输入有误,重新输入!')
#================获取文件中的内容
def get_system_info():
  
    system_info=file_manager.read_json_file(user_name+'.json')
    if system_info:
        return system_info
    return {}

#===================添加学生
def add_student():
    while True:
        #1.输入信息
        name=input('姓名:')
        age=input('年龄:')
        tel=input('电话:')
        #2.产生id
        id,number = creat_id()
        #3.创建学生
        stu = {key_name:name,key_age:age,key_tel:tel,key_id:id}

        #4.保存学生信息
        system_info=get_system_info()
        all_student=system_info.get(key_all_students,[])
        all_student.append(stu)
        #5.保存到文件中
        system_info[key_all_students]=all_student
        system_info[key_number]=number
        re =file_manager.write_json_file(user_name+'.json',system_info)
        if re:
            print('添加成功!')
        else:
            print('添加失败!')
        print('1.继续添加')
        print('2.返回')
        value=input('请选择(1/2):')
        if value=='1':
            continue
        else:
            break
#===================产生学号
def creat_id():
    """
    先知道个数,产生学号
    :return:
    """
    system_info=get_system_info()
    number=system_info.get(key_number,0)
    number += 1
    id = 'stu'+str(number).rjust(4,'0')
    return id,number
#===================查找学生
def find_student():
    print('1.查看所有的学生')
    print('2.根据姓名查找学生')
    print('3.根据学号查找学生')

    all_students = get_system_info().get(key_all_students, [])
    if not all_students:
        print('目前没有学生')
        return
    value=input('请选择(1-3):')
    #查所有的学生
    if value=='1':
        for stu in all_students:
            print('姓名:%s 学号:%s 年龄:%s 电话:%s' % (stu[key_name], \
                stu[key_id], stu[key_age], stu[key_tel]))

    elif value=='2':
        name=input('姓名')
        for stu in all_students:
            if name==stu[key_name]:
                print('姓名:%s 学号:%s 年龄:%s 电话:%s' % (stu[key_name], \
                stu[key_id], stu[key_age], stu[key_tel]))

    elif value=='3':
        id = input('学号:')
        for stu in all_students:
            if id==stu[key_id]:
                print('姓名:%s 学号:%s 年龄:%s 电话:%s' % (stu[key_name], \
                    stu[key_id], stu[key_age], stu[key_tel]))
                break#学号唯一,只要找到就不用再找了
#======================删除学生
def delete_student():
    print('1.根据姓名删除学生')
    print('2.根据编号删除学生')

    system_info = get_system_info()
    all_students=system_info.get(key_all_students)
    numbers=get_system_info().get(key_number)

    value=int(input('请选择(1-2):'))

    if value==1:
        while True:
            del_name=input('请输入要删除的学生姓名:')
            for student in all_students:
                if del_name == student[key_name]:
                    print(student)
            print('请确认是否删除?(Y/N)')
            value1=input('请选择:')
            if value1=='Y':
                all_students.remove(student)
                break
            else:
                continue
        system_info[key_all_students] = all_students
        re = file_manager.write_json_file(user_name+'.json',system_info)
        if re:
            print('删除成功!')
        else:
            print('删除失败!')

    if value==2:
        while True:
            del_num=input('请输入要删除的学生编号:')
            for student in all_students:
                if del_num == student[key_number]:
                    print(student)
            print('请确认是否删除?(Y/N)')
            value1=input('请选择:')
            if value1=='Y':
                all_students.remove(student)
                break
            else:
                continue
        system_info[key_all_students] = all_students
        re = file_manager.write_json_file(user_name+'.json',system_info)
        if re:
            print('删除成功!')
        else:
            print('删除失败!')
#==================修改学生
def revise_student():
    while True:
        system_info=get_system_info()
        all_student=system_info.get(key_all_students)
        revise_name=input('请输入要修改的学生姓名:')
        for student in all_student:
            if revise_name==student[key_name]:
                revise_tel=input('请输入修改后的电话:')
                student[key_tel]=revise_tel
        print(all_student)
        system_info[key_all_students]=all_student
        re=file_manager.write_json_file(user_name+'.json',system_info)
        if re:
            print('修改成功!')
        else:
            print('修改失败!')
        print('1.继续修改')
        print('2.返回')
        value = int(input('请选择(1/2):'))
        if value==1:
            continue
        else:
            break

三.文件操作相关的功能

import json
#==================内容写入json文件
def write_json_file(file_name,content):
    """
    将内容写入json文件中
    :param file_name: 文件名
    :param content: 要写的内容
    :return: 是否写入成功
    """
    try:
        with open('./files/'+file_name,'w',encoding='utf-8') as f:
            json.dump(content,f)
            return True
    except:
        return False


#==================读取json文件内容
def read_json_file(file_name):
    """
    读取json文件的内容
    :param file_name:文件名
    :return:文件内容
    """
    try:
        with open('./files/'+file_name,encoding='utf-8') as f:
            return json.load(f)
    except:
        return None


#==================获取txt文件内容
def read_text_file(file_name):
    """
    获取文本文件的内容
    :param file_name:文件名
    :return:文件的内容
    """
    try:
        with open('./files/'+file_name,encoding='utf-8') as f:
            return f.read()
    except FileNotFoundError:
        print('文件不存在')
        return None

总结:
首先,拿到一个项目时,先分析一下项目由哪些部分组成的,先构思大的框架,然后把功能按模块进行填充,先整体后局部,不要妄想一口吃个胖子,一部分一部分进行.其中,遇到一些经常要用到的代码,可以封装成模块,或者写成函数.写函数的时候先不声明,先写调用,按函数的功能取名,在声明函数时,可以先不传参数,等写函数体时需要传数据,再写参数.写好一个功能可以先检测,以免后期不知道错误的出处.注意,可以留好接口,以备后期进行修改.声明全局变量可以帮助提高输写的效率.

相关文章

网友评论

      本文标题:学生信息管理系统3.0

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