编程逻辑思维巩固案列演练
文章目录编程逻辑思维巩固案列演练1、项目介绍2.环境准备3.功能实现1.项目主流程和菜单提示2.数据库连接3.添加图书4.修改图书5.图书列表6.查询图书7.删除图书8.借阅图书9.归还图书python操作数据库图书管理小项目编程逻辑思维巩固案列演练通过python的面向对象编程,实现一个文字版的图书管理系统本章节的目的,强化大家编程的逻辑思维能力知识点基本的sql增删改查面向对象的使用1、项目介
文章目录
编程逻辑思维巩固案列演练
通过python的面向对象编程,实现一个文字版的图书管理系统
-
本章节的目的,强化大家编程的逻辑思维能力
-
知识点
- 基本的sql增删改查
- 面向对象的使用
1、项目介绍
- 功能模块
- 图书信息
2.环境准备
-
数据存储方式:mysql
-
创建表
create table books( id int unsigned primary key auto_increment not null, name varchar(20) default '', position varchar(40) default '', status enum('在库','出借') default '在库', borrorwer varchar(20) default '' );
-
插入数据
# 部分列插入语法:=> insert into 表名(列1,...) values(值1,...) insert into books(name,position) value('python入门到精通','A区2号架3层'); # 全列插入语法=> insert into 表名 values(...) insert into books value(0,'python入门到精通','A区2号架3层','在库','');
-
修改数据
# 修改数据 update 表名 set 列1=值1,列2=值2... where 条件
-
删除数据语法
delete from 表名 where 条件;
-
查询
select * from 表名;
-
-
python连接mysql数据库
# 安装pymysql pip install pymysql
-
连接数据库
pymysql.connect( host='localhost', user='root', password="123456", database='test', port=3306, cursorclass=pymysql.cursors.DictCursor)
-
创建游标对象
-
执行sql语句
-
3.功能实现
1.项目主流程和菜单提示
- 1、运行程序,打印提示菜单
- 2、根据输入不同的选项进行对应的操作
2.数据库连接
- 通过pymysql连接数据库,封装执行查询语句和修改语句的方法。
3.添加图书
-
1、用户依次输入书名、存放位置
-
2、校验输入的书名和位置是否有值
-
3、添加图书到数据库
-
4、提示:
- 继续添加输入1,回车退回到主菜单
4.修改图书
需求:修改图书只能修改书名和位置信息。
-
1、用户输入修改的图书编号,判断id是否存在
-
2、编号存在则打印改书本的全部信息,并提示用户输入新的书名,和新的位置。
-
3、根据用户的输入,对图书进行修改
-
4、提示:
- 继续添加输入1,回车退回到主菜单
5.图书列表
- 查询数据库中所有的图书,打印出来显示
6.查询图书
-
1、输入书名,查询出与之匹配的图书信息,并打印
-
2、提示:
- 继续查询输入1,回车退回到主菜单
7.删除图书
-
1、输入书籍编号,找到对应的书籍,从数据库中删除
-
2、提示:
- 继续删除输入1,回车退回到主菜单
8.借阅图书
-
1、输入图书编号,查找到该书籍
-
2、提示用户输入借阅人名字
-
3、将书籍的状态改为出借,借阅人改为输入的名字
-
4、提示:
- 继续添加输入1,回车退回到主菜单
9.归还图书
-
1、输入图书编号,查找到该书籍
-
2、将书籍的状态改为在库,借阅人改为空
-
3、提示:
- 继续添加输入1,回车退回到主菜单
python操作数据库
pymysql_practice.py
import pymysql
#pymysql连接数据库
con = pymysql.connect( host='localhost',
user='root',
password="123456",
database='lenovo',
port=3306,
cursorclass=pymysql.cursors.DictCursor)
#创建一个游标对象
cur = con.cursor(cursor=pymysql.cursors.DictCursor) #以字典形式展示数据
#执行sql
sql = "select * from books"
res = cur.execute(sql)
print(res)
#获取查询的结果
result1 = cur.fetchall()
print(result1)
#执行增删改的sql
sql = 'insert into books(name,position) value("天龙八部","A区1号架1层");'
res2 = cur.execute(sql)
#提交事务
con.commit()
print(res2)
con.close()
图书管理小项目
BookManage.py
import pymysql
class DB:
'''
项目涉及到数据库的增删查改,咱们封装数据库对应的操作方法来处理
查询的方法
增删改的方法
'''
def __init__(self):
# pymysql连接数据库
self.con = pymysql.connect(host='localhost',
user='root',
password="123456",
database='lenovo',
port=3306,
cursorclass=pymysql.cursors.DictCursor)
# 创建一个游标对象
self.cur = self.con.cursor(cursor=pymysql.cursors.DictCursor) # 以字典形式展示数据
def query_sql(self,sql):
'''
查询sql方法
:param sql: sql语句
:return: 查询得到的结果
'''
self.cur.execute(sql)
return self.cur.fetchall()
def update_sql(self,sql):
'''
:param sql: sql语句
:return:
'''
self.cur.execute(sql)
self.con.commit()
def close(self):
"""关闭游标,断开连接"""
self.cur.close()
self.con.close()
class Books(DB):
def add_book(self):
'''添加图书'''
print("---------添加图书--------")
name = input("请输入书名:")
position = input("请输入图书存放的位置:")
if name and position:
sql = "insert into books(name,position) value('{}','{}')".format(name,position)
self.update_sql(sql)
print("添加成功!")
else:
print("添加失败,书名和位置均不能为空!!!")
n = input("继续添加请输入1,回车返回主菜单")
#判断用户输入的是否为1,为1则再次调用添加图书的方法
if n == "1":
self.add_book()
else:
pass
def update_book(self):
'''修改图书'''
print("----------修改图书------------")
id = input("请输入要修改图书的ID")
#打印图书的信息
res = self.query_sql(f'select * from books where id={id}')
if res:
print("当前图书的信息",res)
# 进行修改
name = input("请输入新的书名,不修改请输入回车:") or res[0]['name']
position = input("请输入图书存放的位置,不修改请输入回车:") or res[0]['position']
sql = f'update books set name = "{name}",position="{position}" where id="{id}"'
self.update_sql(sql)
print("修改成功!")
else:
print("您输入的书籍id不存在")
n = input("继续修改请输入1,回车返回主菜单")
if n == "1":
self.update_book()
else:
pass
def del_book(self):
'''删除图书'''
print("----------删除图书------------")
id = input("请输入删除图书的id:")
# 打印图书的信息
res = self.query_sql(f'select * from books where id={id}')
if res:
print("您要删除的书籍信息如下:",res)
is_delete = input("确认删除请输入1,否则请输入回车:")
if is_delete == "1" and res[0]["status"]=="在库":
sql = 'delete from books where id = {id}'
self.update_sql(sql)
print("删除成功")
elif res[0]["status"]=="出借":
print("本书已出借,无法删除!")
else:
print("您输入的书籍id不存在")
#判断是否要继续删除
n = input("继续删除请输入1,回车返回主菜单")
if n == "1":
self.del_book()
else:
pass
def qurey_book(self):
'''查询图书'''
print("----------查询图书------------")
name = input("请输入要查询的图书名:")
if name:
sql = f"select * from books where name = '{name}' "
res = self.query_sql(sql)
if res:
for i in res:
print(i)
else:
print("图书馆暂无该书籍!")
else:
print("书名不能为空!")
# 判断是否要继续查询
n = input("继续查询请输入1,回车返回主菜单")
if n == "1":
self.qurey_book()
else:
pass
def book_list(self):
'''图书列表'''
sql = "select * from books"
res = self.query_sql(sql)
print("****************图书列表***************")
for i in res:
print(f'编号:{i["id"]},书名:{i["name"]},位置:{i["position"]},'
f'转态:{i["status"]},借阅人:{i["borrorwer"]}')
print("返回主菜单页面")
def revert_book(self):
'''归还图书'''
print("----------删除图书------------")
id = input("请输入要归还图书的ID:")
sql = f'select * from books where id = {id}'
res = self.query_sql(sql)
if res:
print("您要归还的图书信息如下:\n",res)
#查看图书的状态,如果状态为出借,则不能借出
if res[0]["status"] == "出借":
status = "在库"
lend_sql = f'update books set status="{status}",borrorwer=" " where id="{id}"'
self.update_sql(lend_sql)
print("归还成功")
else:
print("本书并未出借!")
else:
print("请输入正确的图书编号!")
# 判断是否要继续租借
n = input("继续归还请输入1,回车返回主菜单")
if n == "1":
self.revert_book()
else:
pass
def lend_book(self):
'''租借图书'''
print("----------租借图书------------")
id = input("请输入要租借图书的ID:")
sql = f'select * from books where id = {id}'
res = self.query_sql(sql)
if res:
print("您要借阅的图书信息如下:\n",res)
#查看图书的状态,如果状态为出借,则不能借出
if res[0]["status"] == "出借":
print("该图书已被借出!")
else:
print("本书可借出!")
borrorwer = input("借书请输入您的名字:")
status = "出借"
lend_sql = f'update books set status="{status}",borrorwer="{borrorwer}" where id="{id}"'
self.update_sql(lend_sql)
print("登记成功,借阅成功!")
else:
print("图书馆暂无该书籍!")
# 判断是否要继续租借
n = input("继续租借请输入1,回车返回主菜单")
if n == "1":
self.lend_book()
else:
pass
def quit(self):
'''退出'''
self.close()
print("程序退出!!!")
def print_menu(self):
'''打印菜单'''
print("-----菜单---------")
print("【1】︰添加图书\n"
"【2】:修改图书\n"
"【3】:删除图书\n"
"【4】:查询图书\n"
"【5】:图书列表\n"
"【6】:出借图书\n"
"【7】:归还图书\n"
"【8】:退出")
def main(self):
print("---------------欢迎进入小仔图书管理系统---------------")
while True:
self.print_menu()
number = input("请输入你的选项:")
if number == '1':
self.add_book()
elif number == "2":
self.update_book()
elif number == "3":
self.del_book()
elif number == "4":
self.qurey_book()
elif number == "5":
self.book_list()
elif number == "6":
self.lend_book()
elif number == "7":
self.revert_book()
elif number == "8":
self.quit()
break
else:
print("您输入的选项有误!憨批!")
if __name__ == '__main__':
book = Books()
book.main()
欢迎关注我的微信公众号:
梦无矶的测试开发之路

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)