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