006day_简易学生信息管理系统(第一次自己完成这么长的代码~~~~~)

创建三个文件:
第一个:student.py(存放学生类)
第二个:studentManager.py(教师管理)
第三个:main.py(程序入口)

了解面向对象开发过程中类内部功能的分析和方法
了解常用系统功能
添加
删除修改
查询


学元数据存储在一个系统文件中
系统功能:添删改差,显示学员信息,退出



分析:
角色分析:学员,管理系统

工作中注意事项:为了方便代码维护,一般一个角色一个程序文件。项目要有主程序入口main.py


创建程序文件:

程序文件:
程序入口文件:main.py
学员文件:student.py
管理系统文件:managerSystem.py

student.py

'''
学员信息包含:姓名,性别,手机号
添加__str__方法,方便查看学员对象信息

'''
class Student(object):
    def __init__(self,name,gender,tel):
        self.name = name
        self.gender = gender
        self.tel = tel


    def __str__(self):
        return '%s,%s,%s' %(self.name,self.gender,self.tel)

ManagerSystem.py

import sys
from student import *
import pickle
FILE_PATH='student_info'


class Mypickle:#自定义pickle模块
    def __init__(self):
        self.path = FILE_PATH
    def dump(self,obj):
        with open(self.path,'ab') as f:
            pickle.dump(obj,f)
    def load(self):
        with open(self.path,'rb') as f:
            while True:
                try:
                    yield pickle.load(f)
                except:
                    break
    def del_dump(self,obj):
        with open(self.path,'wb') as f:
            pickle.dump(obj,f)

class StudentManager(object):
    opt_lst = [('添加学员','add_student'), ('删除学员','delete_student'), ('修改学员','mod_student'),
               ('查询学员信息','query_student'), ('显示所有学员信息','show_student_info'),
               ('退出','exit')]
    student_list = []
    def __init__(self):
        #存储数据所用的列表
        pass


    #1.程序入口函数,启动程序后执行不同功能
    @classmethod
    def run(cls):
        #加载学员信息
        cls.load_student()

        while True:
            # 显示菜单
            cls.show_menu()

            # 用户输入序号选择功能
            menu_num = int(input('请输入要选择的功能序号:'))

            # 根据用户输入的不同功能的序号选择功能
            if hasattr(cls,cls.opt_lst[menu_num-1][1]):
                getattr(cls,cls.opt_lst[menu_num-1][1])()

            else:
                print('还没有添加此功能------------!')


    @staticmethod
    def load_student():
        for student in Mypickle().load():
            StudentManager.student_list.append(student)
        print('学生信息加载完毕')


    @staticmethod
    def show_menu():
        for index,opt in enumerate(StudentManager.opt_lst,1):
            print(index,opt[0])

    @staticmethod
    def add_student():
        num = int(input('请输入要添加几名学员:'))
        count=0
        if num>0 and isinstance(num,int):
            while num>0:
                name = input('请输入要添加的学员的名字:')
                gender = input('请输入该学员的性别:')
                tel = input('请输入该学员的手机号码:')
                obj = Student(name,gender,tel)
                StudentManager.student_list.append(obj)
                num-=1
                count += 1
            opt = input('是否要保存到文件中(Y/N):')
            if opt.upper()=='Y':
                for student in StudentManager.student_list[-count:]:
                    Mypickle().dump(student)
                print('学生信息保存完成')
            elif opt.upper()=='N':
                pass
        else:
            pass

    @staticmethod
    def delete_student():
        del_name=input('请输入要删除的学生的姓名:')
        del_tel = input('请输入要删除的学生的手机号码:')
        count=0
        for stu in StudentManager.student_list:
            if del_tel==stu.tel and del_name==stu.name:
                # print(count)
                # print(StudentManager.student_list)
                del StudentManager.student_list[count]
                # print(StudentManager.student_list)

                break
            else:
                count+=1
        opt = input('是否要保存操作到文件中(Y/N):')
        if opt.upper() == 'Y':
            i = 0
            for student in StudentManager.student_list:
                if i==0:
                    Mypickle().del_dump(student)
                    i=1
                elif i==1 :
                    Mypickle().dump(student)
            print('学生信息保存完成')
        elif opt.upper() == 'N':
            pass

    @staticmethod
    def mod_student():
        name = input('请输入要修改的学生的姓名:')
        count=0
        for stu in StudentManager.student_list:
            if name==stu.name:
                gender = stu.gender
                tel = input('要修改成的手机号码:')
                del StudentManager.student_list[count]
                obj = Student(name,gender,tel)
                # Mypickle().dump(obj)
                StudentManager.student_list.append(obj)
                i = 0
                for student in StudentManager.student_list:
                    if i == 0:
                        Mypickle().del_dump(student)
                        i = 1
                    elif i == 1:
                        Mypickle().dump(student)
            else:
                count+=1

    @staticmethod
    def query_student():
        options = ['姓名','手机号码']
        for index,opt in enumerate(options,1):
            print(index,opt)
        ans = int(input('您想要按什么查找:'))
        if ans==1:
            name = input('请输入要查找的姓名:')
            for stu in StudentManager.student_list:
                if name==stu.name:
                    print("姓名:%s    性别:%s   手机号码:%s" % (stu.name, stu.gender, stu.tel))
                else:continue
        elif ans==2:
            tel = input('请输入要查找的手机号:')
            for stu in StudentManager.student_list:
                if tel==stu.tel:
                    print("姓名:%s    性别:%s   手机号码:%s" % (stu.name, stu.gender, stu.tel))
                else:continue

    @staticmethod
    def show_student_info():
        try:
            for student in Mypickle().load():
                print("姓名:%s    性别:%s   手机号码:%s" %(student.name,student.gender,student.tel))
        except:
            print('信息显示完毕~~~~')

    @staticmethod
    def exit():
        print('谢谢您的使用~~~')
        sys.exit()



if __name__ == '__main__':
    man = StudentManager()
    man.run()

main.py

from managerSystem_new import *
if __name__ == '__main__':
    man = StudentManager()
    man.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值