美文网首页
学生信息管理系统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