美文网首页
Python项目:学生管理系统

Python项目:学生管理系统

作者: _无名人 | 来源:发表于2017-12-17 21:45 被阅读0次

    学生管理系统


    学生管理系统作用就是对于学生信息的处理、存储。
    处理就包括:添加、删除、修改、显示、查找等
    存储一般调用数据库存储;在这里我们只是作为演示。
    功能待大家自行完善...
    只是为了方便练习基础的小项目.
    用到了sqlalchemy这个模块,没有的小伙伴自行安装一下。


    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    from sqlalchemy import Column, String, create_engine
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    # 创建对象的基类:
    Base = declarative_base()
    # 初始化数据库连接 echo 回显命令 False为关闭
    # engine = create_engine('sqlite:///student.db', echo=False)
    engine = create_engine('mysql+mysqlconnector://zhangge:123456@127.0.0.1:9999/12_21?charset=utf8', echo=False)
    
    
    # 定义user对象:
    class User(Base):
        # 表的名字
        __tablename__ = 'user'
    
        # 表的结构:
        id = Column(String(20), primary_key=True)  # 学号
        name = Column(String(20))  # 姓名
        std_class = Column(String(20))  # 班级
    
        def __init__(self, id, name, std_class):
            self.id = id
            self.name = name
            self.std_class = std_class
    
    
    # ORM
    class StudentBO:
        '''数据库文件操作类'''
    
        def __init__(self):
    
            # 如果没有表,自动创建表
            Base.metadata.create_all(engine)
            # 创建DBSession类型:
            self._DBSession = sessionmaker(bind=engine)
            self._session = self._DBSession()
    
        # 增加数据
        def add_db(self, id, name, std_class):
            '''插入数据'''
            try:
                # 创建新User对象:
                new_user = User(id=id, name=name, std_class=std_class)
                # 添加到session:
                self._session.add(new_user)
                # 提交即保存到数据库
                self._session.commit()
                return True
            except BaseException:
                return False
    
        # 查找数据
        def find_db(self, id):
            try:
                # 按id查找数据
                user = self._session.query(User).filter(User.id == id).one()
                # 返回对象的属性:
                return user.name, user.std_class
            except BaseException:
                print('没有您要查找的学生')
    
        # 判断id是否存在
        def is_id(self, id):
            user = self._session.query(User).filter_by(id=id).scalar()
            if user:
                return 1
            return 0
    
        # 修改数据
        def change_db(self, id, new_name):
            self._session.query(User).filter(User.id == id).update({User.name: new_name},
                                                                   synchronize_session=False)  # 按照ID更新name
            self._session.commit()  # 提交事务
            return
    
        # 用id删除数据
        def del_db(self, id):
            try:
                # 删除数据
                self._session.query(User).filter(User.id == id).delete()
                self._session.commit()
                return True
            except BaseException:
                return False
    
        # 显示数据
        @property
        def show_db(self):
            query = self._session.query(User).all()  # 获得所有数据
            if query != []:
                print('学号\t\t\t\t姓名\t\t班级')
                for user in query:  # 遍历数据
                    if len(user.name) == 2:
                        print('%s\t\t%s\t%7s' % (user.id, user.name, user.std_class))
                    else:
                        print('%s\t\t%s\t%s' % (user.id, user.name, user.std_class))
                self._session.commit()
                return '------------------'
            return '目前还没有学生信息录入'
    
        # 关闭session
        def close(self):
            self._session.close()
    
    
    class UserGui:
        '''用户界面类'''
    
        def __init__(self):
            self.__stdBO = StudentBO()
            while True:
                print('-----学生管理系统------')
                menu = ['添加学生', '查找学生', '删除学生', '显示学生', '修改学生', '退出']
                for k, m in enumerate(menu):
                    print('%d.%s' % (k + 1, m))
                ip = input('请输入你的选择:')
    
                if ip == '1':
                    self.add_std()
                    break
                elif ip == '2':
                    print(self.find_std())
                    break
                elif ip == '3':
                    self.del_std()
                    break
                elif ip == '4':
                    self.show_std()
                    break
                elif ip == '5':
                    self.change_std()
                    break
                elif ip == '6':
                    exit()
                else:
                    print('请输入正确的数字')
    
        # 添加学生
        def add_std(self):
            print('-----添加学生------')
            self._name = input('请输入学生姓名:')
            self._std_class = input('请输入学生班级:')
            self._ID = input('请输入学生学号:')
            re = self.__stdBO.add_db(self._ID, self._name, self._std_class)
            self.__stdBO.close()
            if re:
                print('添加成功')
                return
    
        # 查找学生
        def find_std(self):
            print('-----查找学生------')
            self._ID = input('请输入查找学生的学号:')
            result = self.__stdBO.find_db(self._ID)
            self.__stdBO.close()
            return result
    
        # 删除学生
        def del_std(self):
            print('-----删除学生------')
            self._ID = input('请输入学号:')
            re = self.__stdBO.del_db(self._ID)
            self.__stdBO.close()
            if re:
                print('删除成功')
                return
            print('您输入的学号不存在,请重新输入')
            self.del_std()
    
        # 显示所有学生
        def show_std(self):
            print('-----显示学生------')
            print(self.__stdBO.show_db)
            self.__stdBO.close()
    
        # 修改学生
        def change_std(self):
            print('-----修改学生姓名------')
            self._id = input('请输入学号:')
            re = self.__stdBO.is_id(self._id)
            self.__stdBO.close()
            if re:
                self._name = input('请输入新姓名:')
                self.__stdBO.change_db(self._id, self._name)
                print('修改成功')
                return 1
            print('学号不存在,请重新输入')
            self.change_std()
    
    
    if __name__ == '__main__':
        UserGui()
    

    相关文章

      网友评论

          本文标题:Python项目:学生管理系统

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