# -*- coding: utf-8 -*-
__author__ = '木之易'
__date__ = '2018/7/26 9:12'
import sqlite3
class Student(object):
"""学员信息数据模型类"""
def __init__(self, s_id, name, phone):
self.s_id = s_id
self.name = name
self.phone = phone
def __str__(self):
return "* 学号:{s.s_id:>3} 姓名:{s.name:>4} 电话:{s.phone:>4}".format(s=self)
class StudentManager(object):
def __init__(self, table_name):
# 数据库名称
self.db_path = 'student.db'
# 表名
self.table_name = table_name
# 数据库连接
self.conn = None
# 数据库游标
self.cursor = None
self.key = None
def creat_table(self):
"""创建表"""
self.connect_sql()
sql = "CREATE TABLE IF NOT EXISTS students(s_id INTEGER PRIMARY KEY ,name CHAR ,phone INTEGER )"
self.cursor.execute(sql)
self.close_sql()
def connect_sql(self):
"""打开数据库"""
self.conn = sqlite3.connect(self.db_path)
self.cursor = self.conn.cursor()
def close_sql(self):
"""关闭数据库"""
self.conn.commit()
self.cursor.close()
self.conn.close()
def show_option(self):
"""展示选项"""
print('* 1.添加学员')
print('* 2.修改学员')
print('* 3.查询学员')
print('* 4.删除学员')
print('* 0.退出学员')
def add(self):
"""
添加学员
:return:
"""
while True:
try:
s_id = int(input('* 请输入学号'))
name = input('* 请输入姓名:')
phone = int(input('* 请输入电话:'))
except Exception as e:
print('您输入的信息不合法,请重新输入!')
continue
else:
stu = Student(s_id, name, phone)
break
# 执行插入数据操作
self.insert_sql(stu)
def id_query(self,s_id):
"""根据id查询"""
sql = "SELECT COUNT (),* FROM students WHERE s_id = {}".format(s_id)
result = self.cursor.execute(sql)
for i in result:
if i[0] == 0:
print('此学员不存在')
return None
else:
stu = Student(i[1],i[2],i[3])
return stu
def update(self):
"""选择修改操作"""
while True:
self.connect_sql()
sql = "SELECT * FROM students"
result = self.cursor.execute(sql)
for stu in result:
print('* 学号:{:>6} 姓名:{} 电话:{}'.format(stu[0], stu[1], stu[2]))
try:
s_id = int(input('* 请输入要修改学员的学号'))
if self.id_query(s_id) != None:
stu = self.id_query(s_id)
else:
continue
stu.name = input('* 请输入修改后的姓名:')
stu.phone = int(input('* 请输入修改后的电话:'))
except Exception as e:
print('您输入的信息不合法,请重新输入!')
continue
else:
break
# 执行修改数据操作
self.update_sql(stu)
def delete(self):
"""选择删除操作"""
self.connect_sql()
sql = "SELECT * FROM students"
result = self.cursor.execute(sql)
for stu in result:
print('* 学号:{:>6} 姓名:{} 电话:{}'.format(stu[0], stu[1], stu[2]))
print('* a.删除所有信息')
print('* b.根据学号删除')
select = input('* 请选择删除方式:')
while select != 'a' and select != 'b':
select = input('* 选项有误,请重选:')
if select == 'a':
self.cursor.execute('DELETE FROM students')
self.close_sql()
else:
while True:
try:
s_id = int(input('* 请输入要删除学员的学号'))
if self.id_query(s_id) == None:
continue
except Exception as e:
print('您输入的信息不合法,请重新输入!')
continue
else:
self.delete_sql(s_id)
break
def select(self):
"""选择查询操作"""
while True:
try:
print('1.查询所有学员,2.关键字查询')
select = int(input('* 请选择查询方法:'))
while select != 1 and select != 2:
select = int(input('* 选项有误,请重选:'))
except Exception as e:
print('* 输入的学号不合法,请重新输入!')
continue
else:
break
if select == 2:
self.select_sql('{}'.format(self.key))
else:
self.select_sql(key=None)
def insert_sql(self, stu):
"""插入数据库操作"""
while True:
self.connect_sql()
try:
sql = "INSERT INTO students (s_id,name,phone)VALUES({},'{}',{})".format(stu.s_id, stu.name, stu.phone)
self.cursor.execute(sql)
self.close_sql()
except Exception as e:
print('学号重复,请重新添加!')
self.add()
break
else:
break
def update_sql(self, stu):
"""修改数据库操作"""
sql = "UPDATE " + self.table_name + " SET name = '{}', phone = {} WHERE s_id ={}".format(stu.name, stu.phone, stu.s_id)
self.cursor.execute(sql)
self.close_sql()
def delete_sql(self, s_id):
"""删除数据库操作"""
sql = "DELETE FROM students WHERE s_id ={}".format(s_id)
print('删除成功!')
self.cursor.execute(sql)
self.close_sql()
def select_sql(self, key=None):
"""
查询数据库操作
:param key: 如果key有值,使用关键字模糊查询,若key为None,查询所有数据
:return:
"""
self.connect_sql()
if key:
self.key = input('请输入关键字:')
sql = "SELECT * FROM students WHERE name LIKE '{}%'".format(self.key)
result = self.cursor.execute(sql)
for stu in result:
print('* 学号: {:>6} 姓名: {} 电话: {}'.format(stu[0], stu[1], stu[2]))
else:
sql = "SELECT * FROM students"
result = self.cursor.execute(sql)
for stu in result:
print('* 学号:{:>6} 姓名:{} 电话:{}'.format(stu[0], stu[1], stu[2]))
self.close_sql()
def run(self):
"""程序执行生命周期"""
self.creat_table()
while True:
self.show_option()
while True:
try:
select = int(input('选择您的操作:'))
while select <0 or select > 4:
select = int(input('输入有误,请重新输入:'))
except Exception as e:
print('输入的选项不合法,请重新输入!')
else:
break
if select == 1:
self.add()
elif select == 2:
self.update()
elif select == 3:
self.select()
elif select == 4:
self.delete()
else:
print('* 感谢您的使用,下次再会!')
break
if __name__ == '__main__':
s = StudentManager(table_name='students')
s.run()
利用sql语句实现学员管理系统的增删改查(面向对象方法)
猜你喜欢
转载自blog.csdn.net/A_fool_Program_ape/article/details/81226282
今日推荐
周排行