Python项目:学生管理系统

学生管理系统


学生管理系统作用就是对于学生信息的处理、存储。
处理就包括:添加、删除、修改、显示、查找等
存储一般调用数据库存储;在这里我们只是作为演示。
功能待大家自行完善...
只是为了方便练习基础的小项目.
用到了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:[email protected]: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项目:学生管理系统)